From a20c2bdc7003f8e0b4f523c6af6a55cbb005f57b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 3 Aug 2015 20:44:22 -0700 Subject: [PATCH 001/130] Added new EnergyGroups class for MGXS calculations --- openmc/mgxs/__init__.py | 1 + openmc/mgxs/groups.py | 257 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 258 insertions(+) create mode 100644 openmc/mgxs/__init__.py create mode 100644 openmc/mgxs/groups.py diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py new file mode 100644 index 000000000..8d5086de7 --- /dev/null +++ b/openmc/mgxs/__init__.py @@ -0,0 +1 @@ +__author__ = 'wboyd' diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py new file mode 100644 index 000000000..913851247 --- /dev/null +++ b/openmc/mgxs/groups.py @@ -0,0 +1,257 @@ +import copy +from numbers import Real, Integral + +import numpy as np + +from openmc.checkvalue import * + +class EnergyGroups(object): + """An energy groups structure used for multi-group cross-sections. + + Parameters + ---------- + group_edges : NumPy array + The energy group boundaries [MeV] + num_groups : Integral + The number of energy groups + + Attributes + ---------- + group_edges : NumPy array + The energy group boundaries [MeV] + num_groups : Integral + The number of energy groups + + """ + + def __init__(self): + self._group_edges = None + self._num_groups = None + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone.group_edges = copy.deepcopy(self._group_edges, memo) + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + @property + def group_edges(self): + return self._group_edges + + @property + def num_groups(self): + return self._num_groups + + @group_edges.setter + def group_edges(self, edges): + check_type('group edges', edges, list, Integral) + check_length('number of group edges', edges, 2) + self._group_edges = np.array(edges) + self._num_groups = len(edges)-1 + + def __eq__(self, other): + if not isinstance(other, EnergyGroups): + return False + elif self._group_edges != other._group_edges: + return False + + def generate_bin_edges(self, start, stop, num_groups, type='linear'): + """Generate equally or logarithmically-spaced energy group boundaries. + + Parameters + ---------- + start : Real + The lowest energy in MeV + stop : Real + The highest energy in MeV + num_groups : Integral + The number of energy groups + type : str + The spacing between groups ('linear' or 'logarithmic') + + """ + check_type('first edge', start, Real) + check_type('last edge', stop, Real) + check_type('number of groups', num_groups, Integral) + check_type('type', type, str) + check_greater_than('first edge', start, 0, equality=True) + check_greater_than('first edge', stop, start, equality=False) + check_greater_than('number of groups', num_groups, 0) + check_value('type', type, ('linear', 'logarithmic')) + + if type == 'linear': + self._group_edges = np.linspace(start, stop, num_groups+1) + elif type == 'logarithmic': + self._group_edges = \ + np.logspace(np.log10(start), np.log10(stop), num_groups+1) + + self._num_groups = num_groups + + def get_group(self, energy): + """Returns the energy group in which the given energy resides. + + Parameters + ---------- + energy : Real + The energy of interest in MeV + + Returns + ------- + Integral + The energy group index, starting at 1 for the highest energies + + Raises + ------ + ValueError + If the group edges have not yet been set. + + """ + + if self._group_edges is None: + msg = 'Unable to get energy group for energy "{0}" eV since ' \ + 'the group edges have not yet been set'.format(energy) + raise ValueError(msg) + + index = np.where(self._group_edges > energy)[0] + group = self._num_groups - index + return group + + def get_group_bounds(self, group): + """Returns the energy boundaries for the energy group of interest. + + Parameters + ---------- + group : Integral + The energy group index, starting at 1 for the highest energies + + Returns + ------- + 2-tuple + The low and high energy bounds for the group in MeV + + Raises + ------ + ValueError + If the group edges have not yet been set. + + """ + + if self._group_edges is None: + msg = 'Unable to get energy group bounds for group "{0}" since ' \ + 'the group edges have not yet been set'.format(group) + raise ValueError(msg) + + lower = self._group_edges[self._num_groups-group] + upper = self._group_edges[self._num_groups-group+1] + return (lower, upper) + + + def get_group_indices(self, groups='all'): + """Returns the array indices for one or more energy groups. + + Parameters + ---------- + groups : str, tuple + The energy groups of interest - a tuple of the energy group indices, + starting at 1 for the highest energies (default is 'all') + + Returns + ------- + NumPy.ndarray + The NumPy array indices for each energy group of interest + + Raises + ------ + ValueError + If the group edges have not yet been set, or if a group is requested + that is outside the bounds of the number of energy groups. + + """ + + if self._group_edges is None: + msg = 'Unable to get energy group indices for groups "{0}" since ' \ + 'the group edges have not yet been set'.format(groups) + raise ValueError(msg) + + if groups == 'all': + indices = np.arange(self._num_groups) + else: + indices = np.zeros(len(groups), dtype=np.int64) + + for i, group in enumerate(groups): + if group > 0 and group <= self._num_groups: + indices[i] = group - 1 + else: + msg = 'Unable to get energy group index for group "{0}" ' \ + 'since it is outside the group bounds'.format(group) + raise ValueError(msg) + + return indices + + + def get_condensed_groups(self, coarse_groups): + """Return a coarsened version of this EnergyGroups object. + + This method merges together energy groups in this object into wider + energy groups as defined by the list of groups specified by the user, + and returns a new, coarse EnergyGroups object. + + Parameters + ---------- + coarse_groups : list + The energy groups of interest - a list of 2-tuples, each directly + corresponding to one of the new coarse groups. The values in the + 2-tuples are upper/lower energy groups used to construct a new + coarse group. + + Returns + ------- + EnergyGroups + A coarsened version of this EnergyGroups object. + + Raises + ------ + ValueError + If the group edges have not yet been set. + """ + + check_type('group edges', coarse_groups, list) + for group in coarse_groups: + check_value('group edges', group, tuple) + check_length('group edges', group, 2) + check_greater_than('lower group', group[0], 1, True) + check_less_than('lower group', group[0], self.num_groups, True) + check_greater_than('upper group', group[0], 1, True) + check_less_than('upper group', group[0], self.num_groups, True) + check_less_than('lower group', group[0], group[1], False) + + # Compute the group indices into the coarse group + group_bounds = list() + for group in coarse_groups: + group_bounds.append(group[0]) + group_bounds.append(coarse_groups[-1][1]) + + # Determine the indices mapping the fine-to-coarse energy groups + group_bounds = np.asarray(group_bounds) + group_indices = np.flipud(self._num_groups - group_bounds) + group_indices[-1] += 1 + + # Determine the edges between coarse energy groups and sort + # in increasing order in case the user passed in unordered groups + group_edges = self._group_edges[group_indices] + group_edges = np.sort(group_edges) + + # Create a new condensed EnergyGroups object + condensed_groups = EnergyGroups() + condensed_groups.group_edges = group_edges + return condensed_groups \ No newline at end of file From cfc81640439acf0f25ee5daf60916b182a2fe320 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 9 Aug 2015 16:16:03 -0700 Subject: [PATCH 002/130] First implementation of MultiGroupXS class --- openmc/mgxs/__init__.py | 2 +- openmc/mgxs/groups.py | 82 ++-- openmc/mgxs/mgxs.py | 836 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 879 insertions(+), 41 deletions(-) create mode 100644 openmc/mgxs/mgxs.py diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py index 8d5086de7..4f5c1ea12 100644 --- a/openmc/mgxs/__init__.py +++ b/openmc/mgxs/__init__.py @@ -1 +1 @@ -__author__ = 'wboyd' +from groups import EnergyGroups \ No newline at end of file diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 913851247..061f1c61a 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -1,9 +1,15 @@ -import copy +from collections import Iterable from numbers import Real, Integral +import copy +import sys import numpy as np -from openmc.checkvalue import * +import openmc.checkvalue as cv + + +if sys.version_info[0] >= 3: + basestring = str class EnergyGroups(object): """An energy groups structure used for multi-group cross-sections. @@ -54,8 +60,8 @@ class EnergyGroups(object): @group_edges.setter def group_edges(self, edges): - check_type('group edges', edges, list, Integral) - check_length('number of group edges', edges, 2) + cv.check_type('group edges', edges, Iterable, Integral) + cv.check_length('number of group edges', edges, 2) self._group_edges = np.array(edges) self._num_groups = len(edges)-1 @@ -80,19 +86,20 @@ class EnergyGroups(object): The spacing between groups ('linear' or 'logarithmic') """ - check_type('first edge', start, Real) - check_type('last edge', stop, Real) - check_type('number of groups', num_groups, Integral) - check_type('type', type, str) - check_greater_than('first edge', start, 0, equality=True) - check_greater_than('first edge', stop, start, equality=False) - check_greater_than('number of groups', num_groups, 0) - check_value('type', type, ('linear', 'logarithmic')) + + cv.check_type('first edge', start, Real) + cv.check_type('last edge', stop, Real) + cv.check_type('number of groups', num_groups, Integral) + cv.check_type('type', type, basestring) + cv.check_greater_than('first edge', start, 0, True) + cv.check_greater_than('first edge', stop, start, False) + cv.check_greater_than('number of groups', num_groups, 0) + cv.check_value('type', type, ('linear', 'logarithmic')) if type == 'linear': - self._group_edges = np.linspace(start, stop, num_groups+1) + self.group_edges = np.linspace(start, stop, num_groups+1) elif type == 'logarithmic': - self._group_edges = \ + self.group_edges = \ np.logspace(np.log10(start), np.log10(stop), num_groups+1) self._num_groups = num_groups @@ -117,13 +124,13 @@ class EnergyGroups(object): """ - if self._group_edges is None: + if self.group_edges is None: msg = 'Unable to get energy group for energy "{0}" eV since ' \ 'the group edges have not yet been set'.format(energy) raise ValueError(msg) - index = np.where(self._group_edges > energy)[0] - group = self._num_groups - index + index = np.where(self.group_edges > energy)[0] + group = self.num_groups - index return group def get_group_bounds(self, group): @@ -146,16 +153,15 @@ class EnergyGroups(object): """ - if self._group_edges is None: + if self.group_edges is None: msg = 'Unable to get energy group bounds for group "{0}" since ' \ 'the group edges have not yet been set'.format(group) raise ValueError(msg) - lower = self._group_edges[self._num_groups-group] - upper = self._group_edges[self._num_groups-group+1] + lower = self.group_edges[self.num_groups-group] + upper = self.group_edges[self.num_groups-group+1] return (lower, upper) - def get_group_indices(self, groups='all'): """Returns the array indices for one or more energy groups. @@ -178,27 +184,23 @@ class EnergyGroups(object): """ - if self._group_edges is None: + if self.group_edges is None: msg = 'Unable to get energy group indices for groups "{0}" since ' \ 'the group edges have not yet been set'.format(groups) raise ValueError(msg) if groups == 'all': - indices = np.arange(self._num_groups) + indices = np.arange(self.num_groups) else: indices = np.zeros(len(groups), dtype=np.int64) for i, group in enumerate(groups): - if group > 0 and group <= self._num_groups: - indices[i] = group - 1 - else: - msg = 'Unable to get energy group index for group "{0}" ' \ - 'since it is outside the group bounds'.format(group) - raise ValueError(msg) + cv.check_greater_than('group', group, 0) + cv.check_less_than('group', group, self.num_groups, True) + indices[i] = group - 1 return indices - def get_condensed_groups(self, coarse_groups): """Return a coarsened version of this EnergyGroups object. @@ -225,15 +227,15 @@ class EnergyGroups(object): If the group edges have not yet been set. """ - check_type('group edges', coarse_groups, list) + cv.check_type('group edges', coarse_groups, Iterable) for group in coarse_groups: - check_value('group edges', group, tuple) - check_length('group edges', group, 2) - check_greater_than('lower group', group[0], 1, True) - check_less_than('lower group', group[0], self.num_groups, True) - check_greater_than('upper group', group[0], 1, True) - check_less_than('upper group', group[0], self.num_groups, True) - check_less_than('lower group', group[0], group[1], False) + cv.check_value('group edges', group, Iterable) + cv.check_length('group edges', group, 2) + cv.check_greater_than('lower group', group[0], 1, True) + cv.check_less_than('lower group', group[0], self.num_groups, True) + cv.check_greater_than('upper group', group[0], 1, True) + cv.check_less_than('upper group', group[0], self.num_groups, True) + cv.check_less_than('lower group', group[0], group[1], False) # Compute the group indices into the coarse group group_bounds = list() @@ -243,12 +245,12 @@ class EnergyGroups(object): # Determine the indices mapping the fine-to-coarse energy groups group_bounds = np.asarray(group_bounds) - group_indices = np.flipud(self._num_groups - group_bounds) + group_indices = np.flipud(self.num_groups - group_bounds) group_indices[-1] += 1 # Determine the edges between coarse energy groups and sort # in increasing order in case the user passed in unordered groups - group_edges = self._group_edges[group_indices] + group_edges = self.group_edges[group_indices] group_edges = np.sort(group_edges) # Create a new condensed EnergyGroups object diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py new file mode 100644 index 000000000..792d8d30c --- /dev/null +++ b/openmc/mgxs/mgxs.py @@ -0,0 +1,836 @@ +from collections import Iterable +from numbers import Integral, Real +import os +import sys +import copy +import abc +import pickle +import subprocess + +import numpy as np + +import openmc +import openmc.checkvalue as cv +from openmc.mgxs import EnergyGroups + + +if sys.version_info[0] >= 3: + basestring = str + + +# Supported cross-section types +XS_TYPES = ['total', + 'transport', + 'absorption', + 'capture', + 'scatter', + 'nu-scatter', + 'scatter matrix', + 'nu-scatter matrix', + 'fission', + 'nu-fission', + 'chi'] + +# Supported domain types +DOMAIN_TYPES = ['cell', + 'distribcell', + 'universe', + 'material', + 'mesh'] + +# Supported domain objects +DOMAINS = [openmc.Cell, + openmc.Universe, + openmc.Material, + openmc.Mesh] + +# LaTeX Greek symbols for each cross-section type +GREEK = dict() +GREEK['total'] = '$\\Sigma_{t}$' +GREEK['transport'] = '$\\Sigma_{tr}$' +GREEK['absorption'] = '$\\Sigma_{a}$' +GREEK['capture'] = '$\\Sigma_{c}$' +GREEK['scatter'] = '$\\Sigma_{s}$' +GREEK['nu-scatter'] = '$\\nu\\Sigma_{s}$' +GREEK['scatter matrix'] = '$\\Sigma_{s}$' +GREEK['nu-scatter matrix'] = '$\\nu\\Sigma_{s}$' +GREEK['fission'] = '$\\Sigma_{f}$' +GREEK['nu-fission'] = '$\\nu\\Sigma_{f}$' +GREEK['chi'] = '$\\chi$' +GREEK['diffusion'] = '$D$' + + +def flip_axis(arr, axis=0): + """Flip contents of `axis` in array 'arr' + Taken verbatim from: + https://github.com/nipy/nibabel/blob/master/nibabel/orientations.py + """ + arr = np.asanyarray(arr) + arr = arr.swapaxes(0, axis) + arr = np.flipud(arr) + return arr.swapaxes(axis, 0) + + +class MultiGroupXS(object): + """ + + """ + + # This is an abstract class which cannot be instantiated + metaclass__ = abc.ABCMeta + + def __init__(self, name='', domain=None, + domain_type=None, energy_groups=None): + """ + :param name: + :param domain: + :param domain_type: + :param energy_groups: + :return: + """ + + self._name = '' + self._xs_type = None + self._domain = None + self._domain_type = None + self._energy_groups = None + self._num_groups = None + self._tallies = dict() + self._xs = None + + # A dictionary used to compute indices into the xs array + # Keys - Domain ID (ie, Material ID, Region ID for districell, etc) + # Values - Offset/stride into xs array + self._subdomain_offsets = dict() + self._offset = None + + self.name = name + if not domain_type is None: + self.domain_type = domain_type + if not domain is None: + self.domain = domain + if not energy_groups is None: + self.energy_groups = energy_groups + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._name = self._name + clone._xs_type = self._xs_type + clone._domain = self._domain + clone._domain_type = self._domain_type + clone._energy_groups = copy.deepcopy(self._energy_groups, memo) + clone._num_groups = self._num_groups + clone._xs = copy.deepcopy(self._xs, memo) + clone._subdomain_offsets = copy.deepcopy(self._subdomain_offsets, memo) + clone._offset = copy.deepcopy(self._offset, memo) + + clone._tallies = dict() + for tally_type, tally in self._tallies.items(): + clone._tallies[tally_type] = copy.deepcopy(tally, memo) + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + @property + def name(self): + return self._name + + @property + def domain(self): + return self._domain + + @property + def domain_type(self): + return self._domain_type + + @property + def energy_groups(self): + return self._energy_groups + + @property + def num_groups(self): + return self._num_groups + + @name.setter + def name(self, name): + cv.check_type('MultiGroupXS name', name, basestring) + self._name = name + + @domain.setter + def domain(self, domain): + cv.check_type('MultiGroupXS domain', domain, DOMAINS) + self._domain = domain + if self._domain_type in ['material', 'cell', 'universe', 'mesh']: + self._subdomain_offsets[domain.id] = 0 + + @energy_groups.setter + def energy_groups(self, energy_groups): + cv.check_type('MultiGroupXS energy groups', energy_groups, + openmc.mgxs.EnergyGroups) + self._energy_groups = energy_groups + self._num_groups = energy_groups._num_groups + + @domain_type.setter + def domain_type(self, domain_type): + cv.check_type('MultiGroupXS domain type', domain_type, DOMAIN_TYPES) + self._domain_type = domain_type + + def find_domain_offset(self): + tally = self.tallies[self.tallies.keys()[0]] + filter = tally.find_filter(self.domain_type, [self.domain.id]) + self._offset = filter.offset + + def set_subdomain_offset(self, domain_id, offset): + """ + :param domain_id: + :param offset: + :return: + """ + + cv.check_type('subdomain id', domain_id, Integral) + cv.check_type('subdomain offset', offset, Integral) + self._subdomain_offsets[domain_id] = offset + + @abc.abstractmethod + def _create_tallies(self, scores, filters, keys, estimator): + """ + + :param scores: + :param filters: + :param keys: + :param estimator: + :return: + """ + + if self.energy_groups is None: + raise ValueError('Unable to create Tallies without energy groups') + elif self.domain is None: + raise ValueError('Unable to create Tallies without a domain') + elif self.domain_type is None: + raise ValueError('Unable to create Tallies without a domain type') + + cv.check_type('scores', scores, Iterable, basestring) + cv.check_value('scores', scores, openmc.SCORE_TYPES) + cv.check_type('filters', scores, Iterable, openmc.Filter) + cv.check_type('keys', keys, Iterable, basestring) + cv.check_value('# scores', len(scores), len(keys)) + cv.check_type('estimator', estimator, basestring) + cv.check_value('estimator', estimator, ['analog', 'tracklength']) + + # Create a domain Filter object + domain_filter = openmc.Filter(self.domain_type, self.domain.id) + + for score, key, filters in zip(scores, keys, filters): + self.tallies[key] = openmc.Tally(name=self.name) + self.tallies[key].add_score(score) + self.tallies[key].estimator = estimator + self.tallies[key].add_filter(domain_filter) + + # Add all non-domain specific Filters (ie, energy) to the Tally + for filter in filters: + self.tallies[key].add_filter(filter) + + def get_subdomain_offsets(self, subdomains='all'): + """ + + :param subdomains: + :return: + """ + + if subdomains != 'all': + cv.check_type('subdomains', subdomains, Iterable, Integral) + + if subdomains == 'all': + offsets = np.arange(self.xs.shape[1]) + else: + offsets = np.zeros(len(subdomains), dtype=np.int64) + + for i, subdomain in enumerate(subdomains): + if subdomain in self._subdomain_offsets: + offsets[i] = self._subdomain_offsets[subdomain] + else: + msg = 'Unable to get index for subdomain "{0}" since it ' \ + 'is not a subdomain in cross-section'.format(subdomain) + raise ValueError(msg) + + return offsets + + def get_subdomains(self, offsets='all'): + + if offsets != 'all': + cv.check_type('offsets', offsets, Iterable, Integral) + + if offsets == 'all': + offsets = self.get_subdomain_offsets() + + subdomains = np.zeros(len(offsets), dtype=np.int64) + keys = self._subdomain_offsets.keys() + values = self._subdomain_offsets.values() + + for i, offset in enumerate(offsets): + if offset in values: + subdomains[i] = keys[values.index(offset)] + else: + msg = 'Unable to get subdomain for offset "{0}" since it ' \ + 'is not an offset in the cross-section'.format(offset) + raise ValueError(msg) + + return subdomains + + def get_xs(self, groups='all', subdomains='all', metric='mean'): + + if self.xs is None: + msg = 'Unable to get cross-section since it has not been computed' + raise ValueError(msg) + + cv.check_value('metric', metric, ['mean', 'std. dev.', 'rel. err.']) + if groups != 'all': + cv.check_value('groups', groups, Iterable, Integral) + if subdomains != 'all': + cv.check_value('subdomains', subdomains, Iterable, Integral) + + # FIXME: Make this use Tally.get_values() + + def get_condensed_xs(self, coarse_groups): + """This routine takes in a collection of 2-tuples of energy groups""" + + cv.check_value('coarse groups', coarse_groups, EnergyGroups) + + # FIXME: this should use the Tally.slice(...) routine + + def get_domain_vg_xs(self, subdomains='all'): + + if self.domain_type != 'distribcell': + msg = 'Unable to compute domain averaged "{0}" xs for "{1}"' \ + '"{2}" since it is not a distribcell'.format(self._xs_type, + self._domain_type, self._domain.id) + raise ValueError(msg) + + if subdomains != 'all': + cv.check_value('subdomains', subdomains, Iterable, Integral) + + # FIXME: This should use tally arithmetic + + def print_xs(self, subdomains='all'): + + if subdomains != 'all': + cv.check_value('subdomains', subdomains, Iterable, Integral) + + string = 'Multi-Group XS\n' + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.xs_type) + string += '{0: <16}{1}{2}\n'.format('\tDomain Type', '=\t', self.domain_type) + string += '{0: <16}{1}{2}\n'.format('\tDomain ID', '=\t', self.domain.id) + + if subdomains == 'all': + subdomains = self._subdomain_offsets.keys() + + # Loop over all subdomains + for subdomain in subdomains: + + if self.domain_type == 'distribcell': + string += '{0: <16}{1}{2}\n'.format('\tSubDomain', '=\t', subdomain) + + string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + + # Loop over energy groups ranges + for group in range(1,self.num_groups+1): + bounds = self._energy_groups.getGroupBounds(group) + string += '{0: <12}Group {1} [{2: <10} - ' \ + '{3: <10}MeV]:\t'.format('', group, bounds[0], bounds[1]) + average = self.get_xs([group], [subdomain], 'mean') + rel_err = self.get_xs([group], [subdomain], 'rel. err.') + string += '{:.2e}+/-{:1.2e}%'.format(average[0,0,0], rel_err[0,0,0]) + string += '\n' + string += '\n' + + print(string) + + def dump_to_file(self, filename='multigroupxs', directory='multigroupxs'): + + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + # Create an empty dictionary to store the data + xs_results = dict() + + # Store all of this MultiGroupXS' class attributes in the dictionary + xs_results['name'] = self.name + xs_results['xs type'] = self.xs_type + xs_results['domain type'] = self.domain_type + xs_results['domain'] = self.domain + xs_results['energy groups'] = self.energy_groups + xs_results['tallies'] = self.tallies + xs_results['xs'] = self.xs + xs_results['offset'] = self._offset + xs_results['subdomain offsets'] = self._subdomain_offsets + + # Pickle the MultiGroupXS results to a file + filename = directory + '/' + filename + '.pkl' + filename = filename.replace(' ', '-') + pickle.dump(xs_results, open(filename, 'wb')) + + def restore_from_file(self, filename='multigroupxs', directory='multigroupxs'): + + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + + filename = directory + '/' + filename + '.pkl' + filename = filename.replace(' ', '-') + + # Check that the file exists + if not os.path.exists(filename): + msg = 'Unable to import from filename="{0}"'.format(filename) + raise ValueError(msg) + + # Load the pickle file into a dictionary + xs_results = pickle.load(open(filename, 'rb')) + + # Store the MultiGroupXS class attributes + self.name = xs_results['name'] + self.xs_type = xs_results['xs type'] + self.domain_type = xs_results['domain type'] + self.domain = xs_results['domain'] + self.energy_groups = xs_results['energy groups'] + self.tallies = xs_results['tallies'] + self.xs = xs_results['xs'] + self._offset = xs_results['offset'] + self._subdomain_offsets = xs_results['subdomain offsets'] + + def exportResults(self, subdomains='all', filename='multigroupxs', + directory='multigroupxs', format='hdf5', append=True): + + if subdomains != 'all': + cv.check_type('submdomains', subdomains, Iterable, Integral) + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + cv.check_values('format', format, ['hdf5', 'pickle']) + cv.check_type('append', append, bool) + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + # FIXME: Use tally arithmetic!!! + + def print_pdf(self, subdomains='all', filename='multigroupxs', + directory='multigroupxs'): + + if subdomains != 'all': + cv.check_type('submdomains', subdomains, Iterable, Integral) + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + filename = filename.replace(' ', '-') + + # Generate LaTeX file + self.exportResults(subdomains, filename, '.', 'latex', False) + + # Compile LaTeX to PDF + FNULL = open(os.devnull, 'w') + subprocess.check_call('pdflatex {0}.tex'.format(filename), + shell=True, stdout=FNULL) + + # Move PDF to requested directory and cleanup temporary LaTeX files + if directory != '.': + os.system('mv {0}.pdf {1}'.format(filename, directory)) + os.system('rm {0}.tex {0}.aux {0}.log'.format(filename)) + + +class TotalXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(TotalXS, self).__init__(name, domain, domain_type, groups) + self.xs_type = 'total' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'total'] + estimator = 'tracklength' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(TotalXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['total'] / self.tallies['flux'] + + +class TransportXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(TransportXS, self).__init__(name, domain, domain_type, groups) + self.xs_type = 'transport' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'total', 'scatter-1'] + estimator = 'analog' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + energyout_filter = openmc.Filter('energyout', group_edges) + filters = [[energy_filter], [energy_filter], [energyout_filter]] + + # Initialize the Tallies + super(TransportXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['total'] - self.tallies['scatter-1'] + self.xs /= self.tallies['flux'] + + +class AbsorptionXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(AbsorptionXS, self).__init__(name, domain, domain_type, groups) + self.xs_type = 'absorption' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'absorption'] + estimator = 'tracklength' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(AbsorptionXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['absorption'] / self.tallies['flux'] + + +class CaptureXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(CaptureXS, self).__init__(name, domain, domain_type, groups) + self._xs_type = 'capture' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'absorption', 'fission'] + estimator = 'tracklength' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter], [energy_filter]] + + # Intialize the Tallies + super(CaptureXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['absorption'] - self.tallies['fission'] + self.xs /= self.tallies['flux'] + + +class FissionXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, energy_groups=None): + super(FissionXS, self).__init__(name, domain, domain_type, energy_groups) + self._xs_type = 'fission' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'fission'] + estimator = 'tracklength' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self._energy_groups._group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(FissionXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['fission'] / self.tallies['flux'] + + +class NuFissionXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(NuFissionXS, self).__init__(name, domain, domain_type, groups) + self._xs_type = 'nu-fission' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'nu-fission'] + estimator = 'tracklength' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(NuFissionXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['nu-fission'] / self.tallies['flux'] + + +class ScatterXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, energy_groups=None): + super(ScatterXS, self).__init__(name, domain, domain_type, energy_groups) + self._xs_type = 'scatter' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'scatter'] + estimator = 'tracklength' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(ScatterXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['scatter'] / self.tallies['flux'] + + +class NuScatterXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(NuScatterXS, self).__init__(name, domain, domain_type, groups) + self._xs_type = 'nu-scatter' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'nu-scatter'] + estimator = 'analog' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(NuScatterXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['nu-scatter'] / self.tallies['flux'] + + +class ScatterMatrixXS(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(ScatterMatrixXS, self).__init__(name, domain, domain_type, groups) + self._xs_type = 'scatter matrix' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'scatter', 'scatter-1'] + estimator = 'analog' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + energyout_filter = openmc.Filter('energyout', group_edges) + filters = [[energy_filter], [energy_filter, energyout_filter], [energyout_filter]] + + # Intialize the Tallies + super(ScatterMatrixXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['scatter'] - self.tallies['scatter-1'] + self.xs /= self.tallies['flux'] + + def get_condensed_xs(self, coarse_groups): + """This routine takes in a collection of 2-tuples of energy groups""" + + cv.check_value('coarse groups', coarse_groups, EnergyGroups) + + # FIXME: this should use the Tally.slice(...) routine + + # Error checking for the group bounds is done here + new_groups = self.energy_groups.getCondensedGroups(coarse_groups) + num_coarse_groups = new_groups._num_groups + + def get_xs(self, in_groups='all', out_groups='all', + subdomains='all', metric='mean'): + + if self.xs is None: + msg = 'Unable to get cross-section since it has not been computed' + raise ValueError(msg) + + cv.check_value('metric', metric, ['mean', 'std. dev.', 'rel. err.']) + if in_groups != 'all': + cv.check_value('in groups', in_groups, Iterable, Integral) + if out_groups != 'all': + cv.check_value('out groups', out_groups, Iterable, Integral) + if subdomains != 'all': + cv.check_value('subdomains', subdomains, Iterable, Integral) + + # FIXME: Make this use Tally.get_values() + + def print_xs(self, subdomains='all'): + + if subdomains != 'all': + cv.check_value('subdomains', subdomains, Iterable, Integral) + + string = 'Multi-Group XS\n' + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.xs_type) + string += '{0: <16}{1}{2}\n'.format('\tDomain Type', '=\t', self.domain_type) + string += '{0: <16}{1}{2}\n'.format('\tDomain ID', '=\t', self.domain.id) + + string += '{0: <16}\n'.format('\tEnergy Groups:') + + # Loop over energy groups ranges + for group in range(1,self.num_groups+1): + bounds = self.energy_groups.get_group_bounds(group) + string += '{0: <12}Group {1} [{2: <10} - ' \ + '{3: <10}MeV]\n'.format('', group, bounds[0], bounds[1]) + + if subdomains == 'all': + subdomains = self._subdomain_offsets.keys() + + for subdomain in subdomains: + + if self.domain_type == 'distribcell': + string += '{0: <16}{1}{2}\n'.format('\tSubDomain', '=\t', subdomain) + + string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + + # Loop over energy groups ranges + for in_group in range(1,self.num_groups+1): + for out_group in range(1,self.num_groups+1): + string += '{0: <12}Group {1} -> Group {2}:\t\t'.format('', in_group, out_group) + average = self.get_xs([in_group], [out_group], [subdomain], 'mean') + rel_err = self.get_xs([in_group], [out_group], [subdomain], 'rel. err.') + string += '{:.2e}+/-{:1.2e}%'.format(average[0,0,0], rel_err[0,0,0]) + string += '\n' + string += '\n' + print(string) + + +class NuScatterMatrixXS(ScatterMatrixXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(NuScatterMatrixXS, self).__init__(name, domain, domain_type, groups) + self.xs_type = 'nu-scatter matrix' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['flux', 'nu-scatter', 'scatter-1'] + estimator = 'analog' + keys = scores + + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + energyout_filter = openmc.Filter('energyout', group_edges) + filters = [[energy_filter], [energy_filter, energyout_filter], [energyout_filter]] + + # Intialize the Tallies + super(ScatterMatrixXS, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + self.xs = self.tallies['nu-scatter'] - self.tallies['scatter-1'] + self.xs /= self.tallies['flux'] + + +class Chi(MultiGroupXS): + + def __init__(self, name='', domain=None, domain_type=None, groups=None): + super(Chi, self).__init__(name, domain, domain_type, groups) + self._xs_type = 'chi' + + def create_tallies(self): + + # Create a list of scores for each Tally to be created + scores = ['nu-fission', 'nu-fission'] + estimator = 'analog' + keys = ['nu-fission-in', 'nu-fission-out'] + + # Create the non-domain specific Filters for the Tallies + group_edges = self._energy_groups._group_edges + energy_filter = openmc.Filter('energy', group_edges) + energyout_filter = openmc.Filter('energyout', group_edges) + filters = [[energy_filter], [energyout_filter]] + + # Intialize the Tallies + super(Chi, self)._create_tallies(scores, filters, keys, estimator) + + def compute_xs(self): + + # Extract and clean the Tally data + tally_data, zero_indices = super(Chi, self).getAllTallyData() + nu_fission_in = tally_data['nu-fission-in'] + nu_fission_out = tally_data['nu-fission-out'] + + # Set any zero reaction rates to -1 + nu_fission_in[0, zero_indices['nu-fission-in']] = -1. + + # FIXME - uncertainty propagation + self._xs = infermc.error_prop.arithmetic.divide_by_scalar(nu_fission_out, + nu_fission_in.sum(2)[0, :, np.newaxis, ...], + corr, False) + + # Compute the total across all groups per subdomain + norm = self._xs.sum(2)[0, :, np.newaxis, ...] + + # Set any zero norms (in non-fissionable domains) to -1 + norm_indices = norm == 0. + norm[norm_indices] = -1. + + # Normalize chi to 1.0 + # FIXME - uncertainty propagation + self._xs = infermc.error_prop.arithmetic.divide_by_scalar(self._xs, norm, + corr, False) + + # For any region without flux or reaction rate, convert xs to zero + self._xs[:, norm_indices] = 0. + + # FIXME - uncertainty propagation - this is just a temporary fix + self._xs[1, ...] = 0. + + # Correct -0.0 to +0.0 + self._xs += 0. \ No newline at end of file From 0a78549adfb569dc48348223c0c96123c2a63c32 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 9 Aug 2015 16:18:59 -0700 Subject: [PATCH 003/130] Added openmc.mgxs to setup.py --- openmc/mgxs/mgxs.py | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 792d8d30c..f5b977f6b 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1,5 +1,5 @@ from collections import Iterable -from numbers import Integral, Real +from numbers import Integral import os import sys import copy @@ -165,7 +165,7 @@ class MultiGroupXS(object): cv.check_type('MultiGroupXS name', name, basestring) self._name = name - @domain.setter + @domain.setterr def domain(self, domain): cv.check_type('MultiGroupXS domain', domain, DOMAINS) self._domain = domain diff --git a/setup.py b/setup.py index b86582dd0..afaa9dcfc 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ except ImportError: kwargs = {'name': 'openmc', 'version': '0.6.2', - 'packages': ['openmc'], + 'packages': ['openmc', 'openmc.mgxs'], 'scripts': glob.glob('scripts/openmc-*'), # Metadata From 8b6f2dde26591bb44b05772f87d8a6d8f8e88a03 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 9 Aug 2015 21:23:19 -0700 Subject: [PATCH 004/130] Added initial docstrings to MultiGroupXS class --- openmc/mgxs/mgxs.py | 566 ++++++++++++++++++++++++++++---------------- 1 file changed, 368 insertions(+), 198 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f5b977f6b..c01c8438a 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -57,38 +57,63 @@ GREEK['nu-scatter matrix'] = '$\\nu\\Sigma_{s}$' GREEK['fission'] = '$\\Sigma_{f}$' GREEK['nu-fission'] = '$\\nu\\Sigma_{f}$' GREEK['chi'] = '$\\chi$' -GREEK['diffusion'] = '$D$' - - -def flip_axis(arr, axis=0): - """Flip contents of `axis` in array 'arr' - Taken verbatim from: - https://github.com/nipy/nibabel/blob/master/nibabel/orientations.py - """ - arr = np.asanyarray(arr) - arr = arr.swapaxes(0, axis) - arr = np.flipud(arr) - return arr.swapaxes(axis, 0) class MultiGroupXS(object): - """ + """A multi-group cross-section for some energy groups structure within + some spatial domain. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross-sections for deterministic neutronics calculations. + + Parameters + ---------- + name : str, optional + Name of the multi-group cross-section. If not specified, the name is + the empty string. + domain : Material or Cell or Universe or Mesh + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe' or 'mesh'} + The domain type for spatial homogenization + energy_groups : EnergyGroups + The energy group structure for energy condensation + + Attributes + ---------- + name : str, optional + Name of the multi-group cross-section + xs_type : str + Cross-section type (e.g., 'total', 'nu-fission', etc.) + domain : Material or Cell or Universe or Mesh + Domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe' or 'mesh'} + Domain type for spatial homogenization + energy_groups : EnergyGroups + Energy group structure for energy condensation + num_groups : Integral + Number of energy groups + tallies : dict + Tallies needed to compute the multi-group cross-section + xs : Tally + Derived tally for the multi-group cross-section. This attribute + is None unless the multi-group cross-section has been computed. + subdomain_offsets : dict + Integral subdomain IDs (keys) mapped to integral tally data array + offsets (values). When the domain_type is 'distribcell', each subdomain + ID corresponds to an instance of the cell domain. For all other domain + types, there is only one subdomain for the domain and this dictionary + will trivially map zero to zero. + offset : Integral + The filter offset for the domain filter """ # This is an abstract class which cannot be instantiated metaclass__ = abc.ABCMeta - def __init__(self, name='', domain=None, - domain_type=None, energy_groups=None): - """ - :param name: - :param domain: - :param domain_type: - :param energy_groups: - :return: - """ - + def __init__(self, domain=None, domain_type=None, + energy_groups=None, name=''): self._name = '' self._xs_type = None self._domain = None @@ -96,12 +121,13 @@ class MultiGroupXS(object): self._energy_groups = None self._num_groups = None self._tallies = dict() - self._xs = None + self._xs_tally = None # A dictionary used to compute indices into the xs array # Keys - Domain ID (ie, Material ID, Region ID for districell, etc) # Values - Offset/stride into xs array - self._subdomain_offsets = dict() + # NOTE: This is primarily used for distribcell domain types + self._subdomain_indices = dict() self._offset = None self.name = name @@ -118,19 +144,19 @@ class MultiGroupXS(object): # If this is the first time we have tried to copy this object, create a copy if existing is None: clone = type(self).__new__(type(self)) - clone._name = self._name - clone._xs_type = self._xs_type - clone._domain = self._domain - clone._domain_type = self._domain_type - clone._energy_groups = copy.deepcopy(self._energy_groups, memo) - clone._num_groups = self._num_groups - clone._xs = copy.deepcopy(self._xs, memo) - clone._subdomain_offsets = copy.deepcopy(self._subdomain_offsets, memo) - clone._offset = copy.deepcopy(self._offset, memo) + clone._name = self.name + clone._xs_type = self.xs_type + clone._domain = self.domain + clone._domain_type = self.domain_type + clone._energy_groups = copy.deepcopy(self.energy_groups, memo) + clone._num_groups = self.num_groups + clone._xs_tally = copy.deepcopy(self.xs_tally, memo) + clone._subdomain_offsets = copy.deepcopy(self.subdomain_indices, memo) + clone._offset = copy.deepcopy(self.offset, memo) clone._tallies = dict() - for tally_type, tally in self._tallies.items(): - clone._tallies[tally_type] = copy.deepcopy(tally, memo) + for tally_type, tally in self.tallies.items(): + clone.tallies[tally_type] = copy.deepcopy(tally, memo) memo[id(self)] = clone @@ -160,145 +186,248 @@ class MultiGroupXS(object): def num_groups(self): return self._num_groups + @property + def tallies(self): + return self._tallies + + @property + def xs_tally(self): + return self._xs_tally + + @property + def offset(self): + return self._offset + + @property + def subdomain_indices(self): + return self._subdomain_indices + @name.setter def name(self, name): - cv.check_type('MultiGroupXS name', name, basestring) + cv.check_type('name', name, basestring) self._name = name - @domain.setterr + @domain.setter def domain(self, domain): - cv.check_type('MultiGroupXS domain', domain, DOMAINS) + cv.check_type('domain', domain, DOMAINS) self._domain = domain if self._domain_type in ['material', 'cell', 'universe', 'mesh']: - self._subdomain_offsets[domain.id] = 0 - - @energy_groups.setter - def energy_groups(self, energy_groups): - cv.check_type('MultiGroupXS energy groups', energy_groups, - openmc.mgxs.EnergyGroups) - self._energy_groups = energy_groups - self._num_groups = energy_groups._num_groups + self._subdomain_indices[domain.id] = 0 @domain_type.setter def domain_type(self, domain_type): - cv.check_type('MultiGroupXS domain type', domain_type, DOMAIN_TYPES) + cv.check_type('domain type', domain_type, DOMAIN_TYPES) self._domain_type = domain_type - def find_domain_offset(self): + @energy_groups.setter + def energy_groups(self, energy_groups): + cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) + self._energy_groups = energy_groups + self._num_groups = energy_groups._num_groups + + def _find_domain_offset(self): + """Finds and stores the offset of the domain tally filter""" tally = self.tallies[self.tallies.keys()[0]] filter = tally.find_filter(self.domain_type, [self.domain.id]) self._offset = filter.offset - def set_subdomain_offset(self, domain_id, offset): - """ - :param domain_id: - :param offset: - :return: + def set_subdomain_index(self, subdomain_id, offset): + """Set the filter bin index for a subdomain of the domain. + + This is primary useful when the domain type is 'distribcell', in which + case it can be useful to map each subdomain (a cell instance) to its + filter bin in the derived multi-group cross-section tally data array. + + Parameters + ---------- + subdomain_id : Integral + The ID for the subdomain + index : Integral + The filter bin index for the subdomain + """ - cv.check_type('subdomain id', domain_id, Integral) + cv.check_type('subdomain id', subdomain_id, Integral) cv.check_type('subdomain offset', offset, Integral) - self._subdomain_offsets[domain_id] = offset + cv.check_greater_than('subdomain id', subdomain_id, 0, True) + cv.check_greater_than('subdomain offset', subdomain_id, 0, True) + self._subdomain_indices[subdomain_id] = offset @abc.abstractmethod - def _create_tallies(self, scores, filters, keys, estimator): + def _create_tallies(self, scores, all_filters, keys, estimator): + """Instantiates tallies needed to compute the multi-group cross-section + + This is a helper method for MultiGroupXS subclasses to create tallies + for input file generation. The tallies are stored in the tallies dict. + + Parameters + ---------- + scores : Iterable of str + Scores for each tally + filters : Iterable of tuple of Filter + Tuples of non-spatial domain filters for each tally + keys : Iterable of str + Key string used to store each tally in the tallies dictionary + estimator : {'analog' or 'tracklength'} + Type of estimator to use for each tally + """ - :param scores: - :param filters: - :param keys: - :param estimator: - :return: - """ - - if self.energy_groups is None: - raise ValueError('Unable to create Tallies without energy groups') - elif self.domain is None: - raise ValueError('Unable to create Tallies without a domain') - elif self.domain_type is None: - raise ValueError('Unable to create Tallies without a domain type') - - cv.check_type('scores', scores, Iterable, basestring) cv.check_value('scores', scores, openmc.SCORE_TYPES) - cv.check_type('filters', scores, Iterable, openmc.Filter) + # FIXME : Use @smharper's recursive iterable checker + # cv.check_type('filters', all_filters, openmc.Filter) cv.check_type('keys', keys, Iterable, basestring) - cv.check_value('# scores', len(scores), len(keys)) - cv.check_type('estimator', estimator, basestring) + cv.check_length('scores', scores, len(keys)) cv.check_value('estimator', estimator, ['analog', 'tracklength']) # Create a domain Filter object domain_filter = openmc.Filter(self.domain_type, self.domain.id) - for score, key, filters in zip(scores, keys, filters): + for score, key, filters in zip(scores, keys, all_filters): self.tallies[key] = openmc.Tally(name=self.name) self.tallies[key].add_score(score) self.tallies[key].estimator = estimator self.tallies[key].add_filter(domain_filter) - # Add all non-domain specific Filters (ie, energy) to the Tally + # Add all non-domain specific Filters (i.e., 'energy') to the Tally for filter in filters: self.tallies[key].add_filter(filter) - def get_subdomain_offsets(self, subdomains='all'): - """ + def get_subdomain_indices(self, subdomains='all'): + """Get the indices for one or more subdomains. + + This method can be used to extract the indices into the multi-group + cross-section tally data array for a subdomain (i.e., cell instance). + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest + + Returns + indices : NumPy ndarray + Array of subdomain indices indexed in the order of the subdomains + + Raises + ------ + ValueError + When one of the subdomains is not a valid subdomain ID. - :param subdomains: - :return: """ if subdomains != 'all': cv.check_type('subdomains', subdomains, Iterable, Integral) if subdomains == 'all': - offsets = np.arange(self.xs.shape[1]) + # FIXME: This isn't correct any more!! + # indices = np.arange(self.xs.shape[1]) else: - offsets = np.zeros(len(subdomains), dtype=np.int64) + indices = np.zeros(len(subdomains), dtype=np.int64) for i, subdomain in enumerate(subdomains): - if subdomain in self._subdomain_offsets: - offsets[i] = self._subdomain_offsets[subdomain] + if subdomain in self.subdomain_indices: + indices[i] = self.subdomain_indices[subdomain] else: msg = 'Unable to get index for subdomain "{0}" since it ' \ - 'is not a subdomain in cross-section'.format(subdomain) + 'is not a valid subdomain'.format(subdomain) raise ValueError(msg) - return offsets + return indices - def get_subdomains(self, offsets='all'): + def get_subdomains(self, indices='all'): + """Get the subdomain IDs for one or more indices. - if offsets != 'all': - cv.check_type('offsets', offsets, Iterable, Integral) + This method can be used to extract the subdomains for the multi-group + cross-section from their indices in the tally data array. - if offsets == 'all': - offsets = self.get_subdomain_offsets() + See also : get_subdomain_offsets - subdomains = np.zeros(len(offsets), dtype=np.int64) - keys = self._subdomain_offsets.keys() - values = self._subdomain_offsets.values() + Parameters + ---------- + indices : Iterable of Integral or 'all' + Subdomain indices of interest - for i, offset in enumerate(offsets): - if offset in values: - subdomains[i] = keys[values.index(offset)] + Returns + subdomains : NumPy ndarray + Array of subdomain IDs indexed in the order of the indices + + Raises + ------ + ValueError + When one of the indices is not a valid subdomain index. + + """ + + if indices != 'all': + cv.check_type('offsets', indices, Iterable, Integral) + + if indices == 'all': + indices = self.get_subdomain_indices() + + subdomains = np.zeros(len(indices), dtype=np.int64) + keys = self.subdomain_indices.keys() + values = self.subdomain_indices.values() + + for i, index in enumerate(indices): + if index in values: + subdomains[i] = keys[values.index(indices)] else: msg = 'Unable to get subdomain for offset "{0}" since it ' \ - 'is not an offset in the cross-section'.format(offset) + 'is not a valid index'.format(index) raise ValueError(msg) return subdomains - def get_xs(self, groups='all', subdomains='all', metric='mean'): + def get_xs(self, groups='all', subdomains='all', value='mean'): + """ - if self.xs is None: + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest + value : str + A string for the type of value to return - 'mean' (default), + 'std_dev' or 'rel_err' are accepted + + Returns + ------- + xs : ndarray + A NumPy array of the multi-group cross-section indexed in the order + each group and subdomain is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + + """ + + if self.xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) - - cv.check_value('metric', metric, ['mean', 'std. dev.', 'rel. err.']) if groups != 'all': cv.check_value('groups', groups, Iterable, Integral) if subdomains != 'all': cv.check_value('subdomains', subdomains, Iterable, Integral) - # FIXME: Make this use Tally.get_values() + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + filters.append(self.domain_type) + filter_bins.append(subdomains) + + # Construct a collection of the energy group filter bins + filters.append('energy') + filter_bins.append(self.energy_groups.get_group_bounds(groups)) + + # Query the multi-group cross-section tally for the data + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + return xs def get_condensed_xs(self, coarse_groups): """This routine takes in a collection of 2-tuples of energy groups""" @@ -307,54 +436,97 @@ class MultiGroupXS(object): # FIXME: this should use the Tally.slice(...) routine - def get_domain_vg_xs(self, subdomains='all'): + def get_subdomain_avg_xs(self, subdomains='all'): + """Construct a subdomain-averaged version of this cross-section. - if self.domain_type != 'distribcell': - msg = 'Unable to compute domain averaged "{0}" xs for "{1}"' \ - '"{2}" since it is not a distribcell'.format(self._xs_type, - self._domain_type, self._domain.id) - raise ValueError(msg) + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + The subdomain IDs to average across + + Returns + ------- + MultiGroupXS + This MultiGroupXS averaged across subdomains of interest + + """ if subdomains != 'all': cv.check_value('subdomains', subdomains, Iterable, Integral) - # FIXME: This should use tally arithmetic + avg_xs = copy.deepcopy(self) + + if self.domain_type == 'distribcell': + avg_xs.domain_type = 'cell' + avg_xs._subdomain_indices = {} + avg_xs._offset = 0 + + # Spatially average each tally + for key, old_tally in avg_xs.tallies.items(): + # FIXME: Need to create Tally.mean(...) + slice_tally = old_tally.slice(filters=[avg_xs.domain_type], + filter_bins=subdomains) + avg_tally = slice_tally.mean(filters=[avg_xs.domain_type], + filter_bins=subdomains) + avg_xs.tallies[key] = avg_tally + + avg_xs.compute_xs() + + return avg_xs def print_xs(self, subdomains='all'): + """Prints a string representation for the multi-group cross-section. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + The subdomain IDs of the cross-sections to include in the report + + """ if subdomains != 'all': cv.check_value('subdomains', subdomains, Iterable, Integral) string = 'Multi-Group XS\n' - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.xs_type) - string += '{0: <16}{1}{2}\n'.format('\tDomain Type', '=\t', self.domain_type) - string += '{0: <16}{1}{2}\n'.format('\tDomain ID', '=\t', self.domain.id) + string += '{0: <16}=\t{1}\n'.format('\tType', self.xs_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 subdomains == 'all': - subdomains = self._subdomain_offsets.keys() + if self.xs_tally is not None: + if subdomains == 'all': + subdomains = self.get_subdomain_indices() - # Loop over all subdomains - for subdomain in subdomains: + # Loop over all subdomains + for subdomain in subdomains: - if self.domain_type == 'distribcell': - string += '{0: <16}{1}{2}\n'.format('\tSubDomain', '=\t', subdomain) + if self.domain_type == 'distribcell': + string += '{0: <16}=\t{1}\n'.format('\tSubDomain', subdomain) - string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') - # Loop over energy groups ranges - for group in range(1,self.num_groups+1): - bounds = self._energy_groups.getGroupBounds(group) - string += '{0: <12}Group {1} [{2: <10} - ' \ - '{3: <10}MeV]:\t'.format('', group, bounds[0], bounds[1]) - average = self.get_xs([group], [subdomain], 'mean') - rel_err = self.get_xs([group], [subdomain], 'rel. err.') - string += '{:.2e}+/-{:1.2e}%'.format(average[0,0,0], rel_err[0,0,0]) + # Loop over energy groups ranges + for group in range(1,self.num_groups+1): + bounds = self.energy_groups.get_group_bounds(group) + string += '{0: <12}Group {1} [{2: <10} - ' \ + '{3: <10}MeV]:\t'.format('', group, bounds[0], bounds[1]) + average = self.get_xs([group], [subdomain], 'mean') + rel_err = self.get_xs([group], [subdomain], 'rel_err')*100. + string += '{:.2e}+/-{:1.2e}%'.format(average, rel_err) + string += '\n' string += '\n' - string += '\n' print(string) - def dump_to_file(self, filename='multigroupxs', directory='multigroupxs'): + def pickle(self, filename='mgxs', directory='mgxs'): + """Store the MultiGroupXS as a pickled binary file. + + Parameters + ---------- + filename : str + Filename for the pickled binary file (default is 'mgxs') + directory : str + Directory for the pickled binary file (default is 'mgxs') + """ cv.check_type('filename', filename, basestring) cv.check_type('directory', directory, basestring) @@ -368,21 +540,30 @@ class MultiGroupXS(object): # Store all of this MultiGroupXS' class attributes in the dictionary xs_results['name'] = self.name - xs_results['xs type'] = self.xs_type - xs_results['domain type'] = self.domain_type + xs_results['xs_type'] = self.xs_type + xs_results['domain_type'] = self.domain_type xs_results['domain'] = self.domain - xs_results['energy groups'] = self.energy_groups + xs_results['energy_groups'] = self.energy_groups xs_results['tallies'] = self.tallies - xs_results['xs'] = self.xs + xs_results['xs_tally'] = self.xs_tally xs_results['offset'] = self._offset - xs_results['subdomain offsets'] = self._subdomain_offsets + xs_results['subdomain_indices'] = self._subdomain_indices - # Pickle the MultiGroupXS results to a file + # Pickle the MultiGroupXS results to a binary file filename = directory + '/' + filename + '.pkl' filename = filename.replace(' ', '-') pickle.dump(xs_results, open(filename, 'wb')) - def restore_from_file(self, filename='multigroupxs', directory='multigroupxs'): + def restore_from_file(self, filename='mgxs', directory='mgxs'): + """Restore the MultiGroupXS from a pickled binary file. + + Parameters + ---------- + filename : str + Filename for the pickled binary file (default is 'mgxs') + directory : str + Directory for the pickled binary file (default is 'mgxs') + """ cv.check_type('filename', filename, basestring) cv.check_type('directory', directory, basestring) @@ -400,17 +581,34 @@ class MultiGroupXS(object): # Store the MultiGroupXS class attributes self.name = xs_results['name'] - self.xs_type = xs_results['xs type'] - self.domain_type = xs_results['domain type'] + self.xs_type = xs_results['xs_type'] + self.domain_type = xs_results['domain_type'] self.domain = xs_results['domain'] - self.energy_groups = xs_results['energy groups'] + self.energy_groups = xs_results['energy_groups'] self.tallies = xs_results['tallies'] - self.xs = xs_results['xs'] + self.xs_tally = xs_results['xs_tally'] self._offset = xs_results['offset'] - self._subdomain_offsets = xs_results['subdomain offsets'] + self._subdomain_indices = xs_results['subdomain_indices'] - def exportResults(self, subdomains='all', filename='multigroupxs', - directory='multigroupxs', format='hdf5', append=True): + def export_xs_data(self, subdomains='all', filename='mgxs', + directory='mgxs', format='hdf5', append=True): + """Export the multi-group cross-secttion data to a file. + + This routine leverages the functionality in the Pandas library to + export DataFrames to CSV, HDF5, LaTeX and PDF files. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + filename : str + Filename for the exported file (default is 'mgxs') + directory : str + Directory for the exported file (default is 'mgxs') + format : {'csv', 'hdf5', 'latex', 'pdf'} + The format for the exported data file + append : bool + If True (default), appends to an existing file if possible + """ if subdomains != 'all': cv.check_type('submdomains', subdomains, Iterable, Integral) @@ -423,35 +621,7 @@ class MultiGroupXS(object): if not os.path.exists(directory): os.makedirs(directory) - # FIXME: Use tally arithmetic!!! - - def print_pdf(self, subdomains='all', filename='multigroupxs', - directory='multigroupxs'): - - if subdomains != 'all': - cv.check_type('submdomains', subdomains, Iterable, Integral) - cv.check_type('filename', filename, basestring) - cv.check_type('directory', directory, basestring) - - # Make directory if it does not exist - if not os.path.exists(directory): - os.makedirs(directory) - - filename = filename.replace(' ', '-') - - # Generate LaTeX file - self.exportResults(subdomains, filename, '.', 'latex', False) - - # Compile LaTeX to PDF - FNULL = open(os.devnull, 'w') - subprocess.check_call('pdflatex {0}.tex'.format(filename), - shell=True, stdout=FNULL) - - # Move PDF to requested directory and cleanup temporary LaTeX files - if directory != '.': - os.system('mv {0}.pdf {1}'.format(filename, directory)) - os.system('rm {0}.tex {0}.aux {0}.log'.format(filename)) - + # FIXME: Use pandas dataframes!! class TotalXS(MultiGroupXS): @@ -475,7 +645,7 @@ class TotalXS(MultiGroupXS): super(TotalXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['total'] / self.tallies['flux'] + self.xs_tally = self.tallies['total'] / self.tallies['flux'] class TransportXS(MultiGroupXS): @@ -501,8 +671,8 @@ class TransportXS(MultiGroupXS): super(TransportXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['total'] - self.tallies['scatter-1'] - self.xs /= self.tallies['flux'] + self.xs_tally = self.tallies['total'] - self.tallies['scatter-1'] + self.xs_tally /= self.tallies['flux'] class AbsorptionXS(MultiGroupXS): @@ -527,7 +697,7 @@ class AbsorptionXS(MultiGroupXS): super(AbsorptionXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['absorption'] / self.tallies['flux'] + self.xs_tally = self.tallies['absorption'] / self.tallies['flux'] class CaptureXS(MultiGroupXS): @@ -552,8 +722,8 @@ class CaptureXS(MultiGroupXS): super(CaptureXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['absorption'] - self.tallies['fission'] - self.xs /= self.tallies['flux'] + self.xs_tally = self.tallies['absorption'] - self.tallies['fission'] + self.xs_tally /= self.tallies['flux'] class FissionXS(MultiGroupXS): @@ -578,7 +748,7 @@ class FissionXS(MultiGroupXS): super(FissionXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['fission'] / self.tallies['flux'] + self.xs_tally = self.tallies['fission'] / self.tallies['flux'] class NuFissionXS(MultiGroupXS): @@ -603,7 +773,7 @@ class NuFissionXS(MultiGroupXS): super(NuFissionXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['nu-fission'] / self.tallies['flux'] + self.xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] class ScatterXS(MultiGroupXS): @@ -628,7 +798,7 @@ class ScatterXS(MultiGroupXS): super(ScatterXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['scatter'] / self.tallies['flux'] + self.xs_tally = self.tallies['scatter'] / self.tallies['flux'] class NuScatterXS(MultiGroupXS): @@ -653,7 +823,7 @@ class NuScatterXS(MultiGroupXS): super(NuScatterXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['nu-scatter'] / self.tallies['flux'] + self.xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] class ScatterMatrixXS(MultiGroupXS): @@ -679,8 +849,8 @@ class ScatterMatrixXS(MultiGroupXS): super(ScatterMatrixXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['scatter'] - self.tallies['scatter-1'] - self.xs /= self.tallies['flux'] + self.xs_tally = self.tallies['scatter'] - self.tallies['scatter-1'] + self.xs_tally /= self.tallies['flux'] def get_condensed_xs(self, coarse_groups): """This routine takes in a collection of 2-tuples of energy groups""" @@ -694,13 +864,13 @@ class ScatterMatrixXS(MultiGroupXS): num_coarse_groups = new_groups._num_groups def get_xs(self, in_groups='all', out_groups='all', - subdomains='all', metric='mean'): + subdomains='all', value='mean'): - if self.xs is None: + if self.xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) - cv.check_value('metric', metric, ['mean', 'std. dev.', 'rel. err.']) + cv.check_value('value', value, ['mean', 'std. dev.', 'rel. err.']) if in_groups != 'all': cv.check_value('in groups', in_groups, Iterable, Integral) if out_groups != 'all': @@ -729,7 +899,7 @@ class ScatterMatrixXS(MultiGroupXS): '{3: <10}MeV]\n'.format('', group, bounds[0], bounds[1]) if subdomains == 'all': - subdomains = self._subdomain_offsets.keys() + subdomains = self._subdomain_indices.keys() for subdomain in subdomains: @@ -773,8 +943,8 @@ class NuScatterMatrixXS(ScatterMatrixXS): super(ScatterMatrixXS, self)._create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs = self.tallies['nu-scatter'] - self.tallies['scatter-1'] - self.xs /= self.tallies['flux'] + self.xs_tally = self.tallies['nu-scatter'] - self.tallies['scatter-1'] + self.xs_tally /= self.tallies['flux'] class Chi(MultiGroupXS): @@ -810,12 +980,12 @@ class Chi(MultiGroupXS): nu_fission_in[0, zero_indices['nu-fission-in']] = -1. # FIXME - uncertainty propagation - self._xs = infermc.error_prop.arithmetic.divide_by_scalar(nu_fission_out, + self._xs_tally = infermc.error_prop.arithmetic.divide_by_scalar(nu_fission_out, nu_fission_in.sum(2)[0, :, np.newaxis, ...], corr, False) # Compute the total across all groups per subdomain - norm = self._xs.sum(2)[0, :, np.newaxis, ...] + norm = self._xs_tally.sum(2)[0, :, np.newaxis, ...] # Set any zero norms (in non-fissionable domains) to -1 norm_indices = norm == 0. @@ -823,14 +993,14 @@ class Chi(MultiGroupXS): # Normalize chi to 1.0 # FIXME - uncertainty propagation - self._xs = infermc.error_prop.arithmetic.divide_by_scalar(self._xs, norm, + self._xs_tally = infermc.error_prop.arithmetic.divide_by_scalar(self._xs_tally, norm, corr, False) # For any region without flux or reaction rate, convert xs to zero - self._xs[:, norm_indices] = 0. + self._xs_tally[:, norm_indices] = 0. # FIXME - uncertainty propagation - this is just a temporary fix - self._xs[1, ...] = 0. + self._xs_tally[1, ...] = 0. # Correct -0.0 to +0.0 - self._xs += 0. \ No newline at end of file + self._xs_tally += 0. \ No newline at end of file From efb3c0488f0d6b08c6b75d517bf06fba6ac34ab1 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 6 Sep 2015 18:51:43 -0400 Subject: [PATCH 005/130] Implemented Tally.summation(...) routine --- openmc/mgxs/mgxs.py | 61 +++++++++++++------------- openmc/tallies.py | 103 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 126 insertions(+), 38 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index c01c8438a..b2019a20a 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -114,6 +114,7 @@ class MultiGroupXS(object): def __init__(self, domain=None, domain_type=None, energy_groups=None, name=''): + self._name = '' self._xs_type = None self._domain = None @@ -141,7 +142,7 @@ class MultiGroupXS(object): def __deepcopy__(self, memo): existing = memo.get(id(self)) - # If this is the first time we have tried to copy this object, create a copy + # If this is the first time we have tried to copy this object, copy it if existing is None: clone = type(self).__new__(type(self)) clone._name = self.name @@ -151,7 +152,7 @@ class MultiGroupXS(object): clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._num_groups = self.num_groups clone._xs_tally = copy.deepcopy(self.xs_tally, memo) - clone._subdomain_offsets = copy.deepcopy(self.subdomain_indices, memo) + clone._subdomain_indices = copy.deepcopy(self.subdomain_indices, memo) clone._offset = copy.deepcopy(self.offset, memo) clone._tallies = dict() @@ -227,15 +228,15 @@ class MultiGroupXS(object): def _find_domain_offset(self): """Finds and stores the offset of the domain tally filter""" - tally = self.tallies[self.tallies.keys()[0]] + tally = self.tallies.values()[0] filter = tally.find_filter(self.domain_type, [self.domain.id]) self._offset = filter.offset - def set_subdomain_index(self, subdomain_id, offset): + def set_subdomain_index(self, subdomain_id, index): """Set the filter bin index for a subdomain of the domain. - This is primary useful when the domain type is 'distribcell', in which - case it can be useful to map each subdomain (a cell instance) to its + This is primarily useful when the domain type is 'distribcell', in + which case one may wish to map each subdomain (a cell instance) to its filter bin in the derived multi-group cross-section tally data array. Parameters @@ -248,10 +249,10 @@ class MultiGroupXS(object): """ cv.check_type('subdomain id', subdomain_id, Integral) - cv.check_type('subdomain offset', offset, Integral) + cv.check_type('subdomain offset', index, Integral) cv.check_greater_than('subdomain id', subdomain_id, 0, True) cv.check_greater_than('subdomain offset', subdomain_id, 0, True) - self._subdomain_indices[subdomain_id] = offset + self._subdomain_indices[subdomain_id] = index @abc.abstractmethod def _create_tallies(self, scores, all_filters, keys, estimator): @@ -274,8 +275,7 @@ class MultiGroupXS(object): """ cv.check_value('scores', scores, openmc.SCORE_TYPES) - # FIXME : Use @smharper's recursive iterable checker - # cv.check_type('filters', all_filters, openmc.Filter) + cv.check_iterable_type('filters', all_filters, openmc.Filter, 1, 2) cv.check_type('keys', keys, Iterable, basestring) cv.check_length('scores', scores, len(keys)) cv.check_value('estimator', estimator, ['analog', 'tracklength']) @@ -299,14 +299,17 @@ class MultiGroupXS(object): This method can be used to extract the indices into the multi-group cross-section tally data array for a subdomain (i.e., cell instance). + See also : get_subdomains + Parameters ---------- subdomains : Iterable of Integral or 'all' Subdomain IDs of interest Returns - indices : NumPy ndarray - Array of subdomain indices indexed in the order of the subdomains + ---------- + indices : ndarray + The subdomain indices indexed in the order of the subdomains Raises ------ @@ -319,8 +322,8 @@ class MultiGroupXS(object): cv.check_type('subdomains', subdomains, Iterable, Integral) if subdomains == 'all': - # FIXME: This isn't correct any more!! - # indices = np.arange(self.xs.shape[1]) + num_subdomains = len(self.subdomain_indices) + indices = np.arange(num_subdomains) else: indices = np.zeros(len(subdomains), dtype=np.int64) @@ -340,7 +343,7 @@ class MultiGroupXS(object): This method can be used to extract the subdomains for the multi-group cross-section from their indices in the tally data array. - See also : get_subdomain_offsets + See also : get_subdomain_indices Parameters ---------- @@ -348,7 +351,8 @@ class MultiGroupXS(object): Subdomain indices of interest Returns - subdomains : NumPy ndarray + ---------- + subdomains : ndarray Array of subdomain IDs indexed in the order of the indices Raises @@ -370,9 +374,9 @@ class MultiGroupXS(object): for i, index in enumerate(indices): if index in values: - subdomains[i] = keys[values.index(indices)] + subdomains[i] = keys[values.index(index)] else: - msg = 'Unable to get subdomain for offset "{0}" since it ' \ + msg = 'Unable to get subdomain for index "{0}" since it ' \ 'is not a valid index'.format(index) raise ValueError(msg) @@ -408,21 +412,20 @@ class MultiGroupXS(object): if self.xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) - if groups != 'all': - cv.check_value('groups', groups, Iterable, Integral) - if subdomains != 'all': - cv.check_value('subdomains', subdomains, Iterable, Integral) filters = [] filter_bins = [] # Construct a collection of the domain filter bins - filters.append(self.domain_type) - filter_bins.append(subdomains) + if subdomains != 'all': + cv.check_value('subdomains', subdomains, Iterable, Integral) + filters.append(self.domain_type) + filter_bins.append(tuple(subdomains)) - # Construct a collection of the energy group filter bins - filters.append('energy') - filter_bins.append(self.energy_groups.get_group_bounds(groups)) + if groups != 'all': + cv.check_value('groups', groups, Iterable, Integral) + filters.append('energy') + filter_bins.append(self.energy_groups.get_group_bounds(groups)) # Query the multi-group cross-section tally for the data xs = self.xs_tally.get_values(filters=filters, @@ -465,9 +468,9 @@ class MultiGroupXS(object): for key, old_tally in avg_xs.tallies.items(): # FIXME: Need to create Tally.mean(...) slice_tally = old_tally.slice(filters=[avg_xs.domain_type], - filter_bins=subdomains) + filter_bins=[tuple(subdomains)]) avg_tally = slice_tally.mean(filters=[avg_xs.domain_type], - filter_bins=subdomains) + filter_bins=[tuple(subdomains)]) avg_xs.tallies[key] = avg_tally avg_xs.compute_xs() diff --git a/openmc/tallies.py b/openmc/tallies.py index 003acd943..1140e18c8 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -3,6 +3,8 @@ import copy import os import pickle import itertools +import functools +from operator import mul from numbers import Integral, Real from xml.etree import ElementTree as ET import sys @@ -1677,8 +1679,8 @@ class Tally(object): new_tally._derived = True new_tally.with_batch_statistics = True new_tally.name = self.name - new_tally._mean = self._mean + other - new_tally._std_dev = self._std_dev + new_tally._mean = self.mean + other + 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 @@ -1746,8 +1748,8 @@ class Tally(object): new_tally = Tally(name='derived') new_tally._derived = True new_tally.name = self.name - new_tally._mean = self._mean - other - new_tally._std_dev = self._std_dev + new_tally._mean = self.mean - other + 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 @@ -1816,8 +1818,8 @@ class Tally(object): new_tally = Tally(name='derived') new_tally._derived = True new_tally.name = self.name - new_tally._mean = self._mean * other - new_tally._std_dev = self._std_dev * np.abs(other) + new_tally._mean = self.mean * other + 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 @@ -1886,8 +1888,8 @@ class Tally(object): new_tally = Tally(name='derived') new_tally._derived = True new_tally.name = self.name - new_tally._mean = self._mean / other - new_tally._std_dev = self._std_dev * np.abs(1. / other) + new_tally._mean = self.mean / other + 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 @@ -2085,7 +2087,7 @@ class Tally(object): """Build a sliced tally for the specified filters, scores and nuclides. This method constructs a new tally to encapsulate a subset of the data - represented by this tally. The subset of data to included in the tally + represented by this tally. The subset of data to include in the tally slice is determined by the scores, filters and nuclides specified in the input parameters. @@ -2200,6 +2202,89 @@ class Tally(object): return new_tally + def summation(self, scores=[], filters=[], filter_bins=[], nuclides=[]): + """Build a sliced tally for the specified filters, scores and nuclides. + + This method constructs a new tally to encapsulate a subset of the data + represented by this tally. The subset of data to include in the tally + slice is determined by the scores, filters and nuclides specified in + the input parameters. + + Parameters + ---------- + scores : list + A list of one or more score strings to sum across + (e.g., ['absorption', 'nu-fission']; default is []) + + filters : list + A list of filter type strings to sum across + (e.g., ['mesh', 'energy']; default is []) + + filter_bins : list of Iterables + A list of the filter bins corresponding to the filter_types + parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin + in the list is the integer ID for 'material', 'surface', 'cell', + 'cellborn', and 'universe' Filters. Each bin is an integer for the + cell instance ID for 'distribcell Filters. Each bin is a 2-tuple of + floats for 'energy' and 'energyout' filters corresponding to the + energy boundaries of the bin of interest. The bin is a (x,y,z) + 3-tuple for 'mesh' filters corresponding to the mesh cell of + interest. The order of the bins in the list must correspond of the + filter_types parameter. + + nuclides : list + A list of nuclide name strings to sum across + (e.g., ['U-235', 'U-238']; default is []) + + Returns + ------- + Tally + A new tally which encapsulates the sum of data requested. + + """ + + # If user did not specify any scores, do not sum across scores + if len(scores) == 0: + scores = [[]] + # Sum across any scores specified by the user + else: + scores = [[score] for score in scores] + + # If user did not specify any nuclides, do not sum across nuclides + if len(nuclides) == 0: + nuclides = [[]] + # Sum across any nuclides specified by the user + else: + nuclides = [[nuclide] for nuclide in nuclides] + + # If user did not specify any filter bins, do not sum across filter bins + if len(filters) == 0: + filter_bins = [[]] + filters = [[]] + # Sum across any filter bins specified by the user + else: + filter_bins = list(itertools.product(*filter_bins)) + filter_bins = [list(filter_bin) for filter_bin in filter_bins] + filters = [filters] + + # Initialize Tally sum + tally_sum = 0 + + # Iterate over all Tally slice operands in summation + prod = [scores, filters, filter_bins, nuclides] + for scores, filters, filter_bins, nuclides in itertools.product(*prod): + tally_slice = self.get_slice(scores, filters, filter_bins, nuclides) + + # Remove filters summed across to avoid bulky CrossFilters + for filter in reversed(tally_slice.filters): + if filter.type in filters: + tally_slice.remove_filter(filter) + + # Accumulate this Tally slice into the Tally sum + tally_sum += tally_slice + + return tally_sum + class TalliesFile(object): """Tallies file used for an OpenMC simulation. Corresponds directly to the From 1d9af02f854208cc6c3679d05713dd71852b44fa Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 6 Sep 2015 19:45:12 -0400 Subject: [PATCH 006/130] Fixed num score bins update in Tally.get_slice(...) routine. Need to cleanup filter reset in Tally.summation(...) --- openmc/tallies.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/openmc/tallies.py b/openmc/tallies.py index 1140e18c8..d52a10dc7 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1516,7 +1516,6 @@ class Tally(object): new_tally.with_summary = self.with_summary if self.num_realizations == other.num_realizations: new_tally.num_realizations = self.num_realizations - new_tally.num_score_bins = self.num_score_bins * other.num_score_bins # Generate filter "outer products" if self.filters == other.filters: @@ -1530,9 +1529,11 @@ class Tally(object): # Generate score "outer products" if self.scores == other.scores: + new_tally.num_score_bins = self.num_score_bins for self_score in self.scores: new_tally.add_score(self_score) else: + new_tally.num_score_bins = self.num_score_bins * other.num_score_bins all_scores = [self.scores, other.scores] for self_score, other_score in itertools.product(*all_scores): new_score = CrossScore(self_score, other_score, binary_op) @@ -2189,10 +2190,15 @@ class Tally(object): for filter_bin in filter_bins[i]: bin_index = filter.get_bin_index(filter_bin) - bin_indices.append(bin_index) + if filter_type in ['energy', 'energyout']: + bin_indices.append(bin_index) + bin_indices.append(bin_index+1) + else: + bin_indices.append(bin_index) new_bins = filter.bins[bin_indices] filter.bins = new_bins + filter.num_bins = len(filter_bins[i]) # Correct each Filter's stride stride = new_tally.num_nuclides * new_tally.num_score_bins @@ -2276,13 +2282,19 @@ class Tally(object): tally_slice = self.get_slice(scores, filters, filter_bins, nuclides) # Remove filters summed across to avoid bulky CrossFilters + removed_filters = [] for filter in reversed(tally_slice.filters): if filter.type in filters: tally_slice.remove_filter(filter) + removed_filters.append(filter) # Accumulate this Tally slice into the Tally sum tally_sum += tally_slice + # FIXME: test if this works for filter + for filter in removed_filters: + tally_sum.add_filter(filter) + return tally_sum From 05b34977a638c43f489ef2383c21fa416bfe8466 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 7 Sep 2015 15:45:20 -0400 Subject: [PATCH 007/130] Refactored pandas dataframe construction into Filter and CrossFilter class abstractions --- openmc/cross.py | 72 +++++++---- openmc/filter.py | 300 ++++++++++++++++++++++++++++++++++++++++++++-- openmc/tallies.py | 245 ++++--------------------------------- 3 files changed, 364 insertions(+), 253 deletions(-) diff --git a/openmc/cross.py b/openmc/cross.py index 735bb4cd2..05ca0f9b6 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -279,26 +279,6 @@ class CrossFilter(object): def __eq__(self, other): return str(other) == str(self) - def split_filters(self): - - split_filters = [] - - # If left Filter is not a CrossFilter, simply append to list - if isinstance(self.left_filter, Filter): - split_filters.append(self.left_filter) - # Recursively descend CrossFilter tree to collect all Filters - else: - split_filters.extend(self.left_filter.split_filters()) - - # If right Filter is not a CrossFilter, simply append to list - if isinstance(self.right_filter, Filter): - split_filters.append(self.right_filter) - # Recursively descend CrossFilter tree to collect all Filters - else: - split_filters.extend(self.right_filter.split_filters()) - - return split_filters - def get_bin_index(self, filter_bin): """Returns the index in the CrossFilter for some bin. @@ -326,6 +306,58 @@ class CrossFilter(object): filter_index = left_index * self.right_filter.num_bins + right_index return filter_index + def get_pandas_dataframe(self, datasize, summary=None): + """Builds a Pandas DataFrame for the CrossFilter's bins. + + This method constructs a Pandas DataFrame object for the CrossFilter + with columns annotated by filter bin information. This is a helper + method for the Tally.get_pandas_dataframe(...) routine. This method + recursively builds and concatenates the Pandas DataFrames for left + and right filters and crossfilters. + + This capability has been tested for Pandas >=0.13.1. However, it is + recommended to use v0.16 or newer versions of Pandas since this method + uses the Multi-index Pandas feature. + + Parameters + ---------- + data_size : Integral + The total number of bins in the tally corresponding to this filter + + summary : None or Summary + An optional Summary object to be used to construct columns for + distribcell tally filters (default is None). The geometric + information in the Summary object is embedded into a Multi-index + column with a geometric "path" to each distribcell intance. + NOTE: This option requires the OpenCG Python package. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame with columns of strings that characterize the + crossfilter's bins. Each entry in the DataFrame will include the one + or more binary operations used to construct the crossfilter's bins. + The number of rows in the DataFrame is the same as the total number + of bins in the corresponding tally, with the filter bin + appropriately tiled to map to the corresponding tally bins. + + See also + -------- + Tally.get_pandas_dataframe(), Filter.get_pandas_dataframe() + + """ + + # If left and right filters are identical, do not combine bins + if self.left_filter == self.right_filter: + df = self.left_filter.get_pandas_dataframe(datasize, summary) + # If left and right filters are different, combine their bins + else: + df = '(' + self.left_filter.get_pandas_dataframe(datasize, summary) + df += ' ' + self.binary_op + ' ' + df += self.right_filter.get_pandas_dataframe(datasize, summary) + ')' + + return df + def __repr__(self): string = 'CrossFilter\n' diff --git a/openmc/filter.py b/openmc/filter.py index 5a8190676..c24684039 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -5,9 +5,10 @@ from numbers import Real, Integral import numpy as np from openmc import Mesh +from openmc.summary import Summary from openmc.constants import * -from openmc.checkvalue import check_type, check_iterable_type, \ - check_greater_than +import openmc.checkvalue as cv + class Filter(object): """A filter used to constrain a tally to a specific criterion, e.g. only tally @@ -135,9 +136,9 @@ class Filter(object): if self.type in ['cell', 'cellborn', 'surface', 'material', 'universe', 'distribcell']: - check_iterable_type('filter bins', bins, Integral) + cv.check_iterable_type('filter bins', bins, Integral) for edge in bins: - check_greater_than('filter bin', edge, 0, equality=True) + cv.check_greater_than('filter bin', edge, 0, equality=True) elif self._type in ['energy', 'energyout']: for edge in bins: @@ -180,13 +181,13 @@ class Filter(object): # FIXME @num_bins.setter def num_bins(self, num_bins): - check_type('filter num_bins', num_bins, Integral) - check_greater_than('filter num_bins', num_bins, 0, equality=True) + cv.check_type('filter num_bins', num_bins, Integral) + cv.check_greater_than('filter num_bins', num_bins, 0, equality=True) self._num_bins = num_bins @mesh.setter def mesh(self, mesh): - check_type('filter mesh', mesh, Mesh) + cv.check_type('filter mesh', mesh, Mesh) self._mesh = mesh self.type = 'mesh' @@ -194,12 +195,12 @@ class Filter(object): @offset.setter def offset(self, offset): - check_type('filter offset', offset, Integral) + cv.check_type('filter offset', offset, Integral) self._offset = offset @stride.setter def stride(self, stride): - check_type('filter stride', stride, Integral) + cv.check_type('filter stride', stride, Integral) if stride < 0: msg = 'Unable to set stride "{0}" for a "{1}" Filter since it ' \ 'is a negative value'.format(stride, self.type) @@ -334,6 +335,287 @@ class Filter(object): return filter_index + def get_pandas_dataframe(self, data_size, summary=None): + """Builds a Pandas DataFrame for the Filter's bins. + + This method constructs a Pandas DataFrame object for the Filter with + columns annotated by filter bin information. This is a helper method + for the Tally.get_pandas_dataframe(...) routine. + + This capability has been tested for Pandas >=0.13.1. However, it is + recommended to use v0.16 or newer versions of Pandas since this method + uses the Multi-index Pandas feature. + + + Parameters + ---------- + data_size : Integral + The total number of bins in the tally corresponding to this filter + + summary : None or Summary + An optional Summary object to be used to construct columns for + distribcell tally filters (default is None). The geometric + information in the Summary object is embedded into a Multi-index + column with a geometric "path" to each distribcell intance. + NOTE: This option requires the OpenCG Python package. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame with columns of strings that characterize the + filter's bins. The number of rows in the DataFrame is the same as + the total number of bins in the corresponding tally, with the filter + bin appropriately tiled to map to the corresponding tally bins. + + For 'cell', 'cellborn', 'surface', 'material', and 'universe' + filters, the DataFrame includes a single column with the cell, + surface, material or universe ID corresponding to each filter bin. + + For 'mesh' filters, the DataFrame includes three columns for the + x,y,z mesh cell indices corresponding to each filter bin. + + For 'energy' and 'energyout' filters, the DataFrame include a single + column with each element comprising a string with the lower, upper + energy bounds for each filter bin. + + For 'distribcell' filters, the DataFrame either includes: + 1) a single column with the cell instance IDs (without summary info) + 2) separate columns for the cell IDs, universe IDs, and lattice IDs + and x,y,z cell indices corresponding to each (with summary info) + + Raises + ------ + ImportError + When Pandas cannot is not installed, or summary info is requested + but OpenCG is not installed. + + See also + -------- + Tally.get_pandas_dataframe(), CrossFilter.get_pandas_dataframe() + + """ + + # Attempt to import the pandas package + try: + import pandas as pd + except ImportError: + msg = 'The pandas Python package must be installed on your system' + raise ImportError(msg) + + df = pd.DataFrame() + + # mesh filters + if self.type == 'mesh': + + # Initialize dictionary to build Pandas Multi-index column + filter_dict = {} + + # Append Mesh ID as outermost index of mult-index + mesh_key = 'mesh {0}'.format(self.mesh.id) + + # Find mesh dimensions - use 3D indices for simplicity + if (len(self.mesh.dimension) == 3): + nx, ny, nz = self.mesh.dimension + else: + nx, ny = self.mesh.dimension + nz = 1 + + # Generate multi-index sub-column for x-axis + filter_bins = np.arange(1, nx+1) + repeat_factor = ny * nz * self.stride + filter_bins = np.repeat(filter_bins, repeat_factor) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_dict[(mesh_key, 'x')] = filter_bins + + # Generate multi-index sub-column for y-axis + filter_bins = np.arange(1, ny+1) + repeat_factor = nz * self.stride + filter_bins = np.repeat(filter_bins, repeat_factor) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_dict[(mesh_key, 'y')] = filter_bins + + # Generate multi-index sub-column for z-axis + filter_bins = np.arange(1, nz+1) + repeat_factor = self.stride + filter_bins = np.repeat(filter_bins, repeat_factor) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_dict[(mesh_key, 'z')] = filter_bins + + # Initialize a Pandas DataFrame from the mesh dictionary + df = pd.concat([df, pd.DataFrame(filter_dict)]) + + # distribcell filters + elif self.type == 'distribcell': + level_df = None + + if isinstance(summary, Summary): + # Attempt to import the OpenCG package + try: + import opencg + except ImportError: + msg = 'The OpenCG package must be installed ' \ + 'to use a Summary for distribcell dataframes' + raise ImportError(msg) + + # Create and extract the OpenCG geometry the Summary + summary.make_opencg_geometry() + opencg_geometry = summary.opencg_geometry + openmc_geometry = summary.openmc_geometry + + # Use OpenCG to compute the number of regions + opencg_geometry.initializeCellOffsets() + num_regions = opencg_geometry._num_regions + + # Initialize a dictionary mapping OpenMC distribcell + # offsets to OpenCG LocalCoords linked lists + offsets_to_coords = {} + + # Use OpenCG to compute LocalCoords linked list for + # each region and store in dictionary + for region in range(num_regions): + coords = opencg_geometry.findRegion(region) + path = opencg.get_path(coords) + cell_id = path[-1] + + # If this region is in Cell corresponding to the + # distribcell filter bin, store it in dictionary + if cell_id == self.bins[0]: + offset = openmc_geometry.get_offset(path, self.offset) + offsets_to_coords[offset] = coords + + # Each distribcell offset is a DataFrame bin + # Unravel the paths into DataFrame columns + num_offsets = len(offsets_to_coords) + + # Initialize termination condition for while loop + levels_remain = True + counter = 0 + + # Iterate over each level in the CSG tree hierarchy + while levels_remain: + levels_remain = False + + # Initialize dictionary to build Pandas Multi-index + # column for this level in the CSG tree hierarchy + level_dict = {} + + # Initialize prefix Multi-index keys + counter += 1 + level_key = 'level {0}'.format(counter) + univ_key = (level_key, 'univ', 'id') + cell_key = (level_key, 'cell', 'id') + lat_id_key = (level_key, 'lat', 'id') + lat_x_key = (level_key, 'lat', 'x') + lat_y_key = (level_key, 'lat', 'y') + lat_z_key = (level_key, 'lat', 'z') + + # Allocate NumPy arrays for each CSG level and + # each Multi-index column in the DataFrame + level_dict[univ_key] = np.empty(num_offsets) + level_dict[cell_key] = np.empty(num_offsets) + level_dict[lat_id_key] = np.empty(num_offsets) + level_dict[lat_x_key] = np.empty(num_offsets) + level_dict[lat_y_key] = np.empty(num_offsets) + level_dict[lat_z_key] = np.empty(num_offsets) + + # Initialize Multi-index columns to NaN - this is + # necessary since some distribcell instances may + # have very different LocalCoords linked lists + level_dict[univ_key][:] = np.NAN + level_dict[cell_key][:] = np.NAN + level_dict[lat_id_key][:] = np.NAN + level_dict[lat_x_key][:] = np.NAN + level_dict[lat_y_key][:] = np.NAN + level_dict[lat_z_key][:] = np.NAN + + # Iterate over all regions (distribcell instances) + for offset in range(num_offsets): + coords = offsets_to_coords[offset] + + # If entire LocalCoords has been unraveled into + # Multi-index columns already, continue + if coords is None: + continue + + # Assign entry to Universe Multi-index column + if coords._type == 'universe': + level_dict[univ_key][offset] = coords._universe._id + level_dict[cell_key][offset] = coords._cell._id + + # Assign entry to Lattice Multi-index column + else: + level_dict[lat_id_key][offset] = coords._lattice._id + level_dict[lat_x_key][offset] = coords._lat_x + level_dict[lat_y_key][offset] = coords._lat_y + level_dict[lat_z_key][offset] = coords._lat_z + + # Move to next node in LocalCoords linked list + if coords._next is None: + offsets_to_coords[offset] = None + else: + offsets_to_coords[offset] = coords._next + levels_remain = True + + # Tile the Multi-index columns + for level_key, level_bins in level_dict.items(): + level_bins = np.repeat(level_bins, self.stride) + tile_factor = data_size / len(level_bins) + level_bins = np.tile(level_bins, tile_factor) + level_dict[level_key] = level_bins + + # Initialize a Pandas DataFrame from the level dictionary + if level_df is None: + level_df = pd.DataFrame(level_dict) + else: + level_df = pd.concat([level_df, pd.DataFrame(level_dict)], axis=1) + + # Create DataFrame column for distribcell instances IDs + # NOTE: This is performed regardless of whether the user + # requests Summary geometric information + filter_bins = np.arange(self.num_bins) + filter_bins = np.repeat(filter_bins, self.stride) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_bins = filter_bins + if level_df is None: + df = pd.DataFrame({self.type :filter_bins}) + else: + level_df = level_df.dropna(axis=1, how='all') + level_df = level_df.astype(np.int) + df = pd.concat([level_df, pd.DataFrame({self.type :filter_bins})], axis=1) + + # energy, energyout filters + elif 'energy' in self.type: + bins = self.bins + num_bins = self.num_bins + + # Create strings for + template = '({0:.1e} - {1:.1e})' + filter_bins = [] + for i in range(num_bins): + filter_bins.append(template.format(bins[i], bins[i+1])) + + # Tile the energy bins into a DataFrame column + filter_bins = np.repeat(filter_bins, self.stride) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_bins = filter_bins + df = pd.concat([df, pd.DataFrame({self.type + ' [MeV]' : filter_bins})]) + + # universe, material, surface, cell, and cellborn filters + else: + filter_bins = np.repeat(self.bins, self.stride) + tile_factor = data_size / len(filter_bins) + filter_bins = np.tile(filter_bins, tile_factor) + filter_bins = filter_bins + df = pd.concat([df, pd.DataFrame({self.type :filter_bins})]) + + df = df.astype(np.str) + return df + def __repr__(self): string = 'Filter\n' string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.type) diff --git a/openmc/tallies.py b/openmc/tallies.py index d52a10dc7..57fa911b2 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1,10 +1,8 @@ -from collections import Iterable +from collections import Iterable, defaultdict import copy import os import pickle import itertools -import functools -from operator import mul from numbers import Integral, Real from xml.etree import ElementTree as ET import sys @@ -976,9 +974,10 @@ class Tally(object): This method constructs a Pandas DataFrame object for the Tally data with columns annotated by filter, nuclide and score bin information. - This capability has been tested for Pandas >=v0.13.1. However, if - possible, it is recommended to use the v0.16 or newer versions of - Pandas since this this method uses the Multi-index Pandas feature. + + This capability has been tested for Pandas >=0.13.1. However, it is + recommended to use v0.16 or newer versions of Pandas since this method + uses the Multi-index Pandas feature. Parameters ---------- @@ -1010,6 +1009,8 @@ class Tally(object): KeyError When this method is called before the Tally is populated with data by the StatePoint.read_results() method. + ImportError + When Pandas can not be found on the caller's system """ @@ -1041,224 +1042,14 @@ class Tally(object): # Find the total length of the tally data array data_size = self.mean.size - # Split CrossFilters into separate filters - split_filters = [] - for filter in self.filters: - if isinstance(filter, CrossFilter): - split_filters.extend(filter.split_filters()) - else: - split_filters.append(filter) - # Build DataFrame columns for filters if user requested them if filters: - for filter in split_filters: + # Append each Filter's DataFRame to the overall DataFrame + for filter in self.filters: + filter_df = filter.get_pandas_dataframe(data_size, summary) - # mesh filters - if filter.type == 'mesh': - - # Initialize dictionary to build Pandas Multi-index column - filter_dict = {} - - # Append Mesh ID as outermost index of mult-index - mesh_id = filter.mesh.id - mesh_key = 'mesh {0}'.format(mesh_id) - - # Find mesh dimensions - use 3D indices for simplicity - if (len(filter.mesh.dimension) == 3): - nx, ny, nz = filter.mesh.dimension - else: - nx, ny = filter.mesh.dimension - nz = 1 - - # Generate multi-index sub-column for x-axis - filter_bins = np.arange(1, nx+1) - repeat_factor = ny * nz * filter.stride - filter_bins = np.repeat(filter_bins, repeat_factor) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - filter_dict[(mesh_key, 'x')] = filter_bins - - # Generate multi-index sub-column for y-axis - filter_bins = np.arange(1, ny+1) - repeat_factor = nz * filter.stride - filter_bins = np.repeat(filter_bins, repeat_factor) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - filter_dict[(mesh_key, 'y')] = filter_bins - - # Generate multi-index sub-column for z-axis - filter_bins = np.arange(1, nz+1) - repeat_factor = filter.stride - filter_bins = np.repeat(filter_bins, repeat_factor) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - filter_dict[(mesh_key, 'z')] = filter_bins - - # Append the multi-index column to the DataFrame - df = pd.concat([df, pd.DataFrame(filter_dict)], axis=1) - - # distribcell filters - elif filter.type == 'distribcell': - if isinstance(summary, Summary): - # Attempt to import the OpenCG package - try: - import opencg - except ImportError: - msg = 'The OpenCG package must be installed ' \ - 'to use a Summary for distribcell dataframes' - raise ImportError(msg) - - # Create and extract the OpenCG geometry the Summary - summary.make_opencg_geometry() - opencg_geometry = summary.opencg_geometry - openmc_geometry = summary.openmc_geometry - - # Use OpenCG to compute the number of regions - opencg_geometry.initializeCellOffsets() - num_regions = opencg_geometry._num_regions - - # Initialize a dictionary mapping OpenMC distribcell - # offsets to OpenCG LocalCoords linked lists - offsets_to_coords = {} - - # Use OpenCG to compute LocalCoords linked list for - # each region and store in dictionary - for region in range(num_regions): - coords = opencg_geometry.findRegion(region) - path = opencg.get_path(coords) - cell_id = path[-1] - - # If this region is in Cell corresponding to the - # distribcell filter bin, store it in dictionary - if cell_id == filter.bins[0]: - offset = openmc_geometry.get_offset(path, - filter.offset) - offsets_to_coords[offset] = coords - - # Each distribcell offset is a DataFrame bin - # Unravel the paths into DataFrame columns - num_offsets = len(offsets_to_coords) - - # Initialize termination condition for while loop - levels_remain = True - counter = 0 - - # Iterate over each level in the CSG tree hierarchy - while levels_remain: - levels_remain = False - - # Initialize dictionary to build Pandas Multi-index - # column for this level in the CSG tree hierarchy - level_dict = {} - - # Initialize prefix Multi-index keys - counter += 1 - level_key = 'level {0}'.format(counter) - univ_key = (level_key, 'univ', 'id') - cell_key = (level_key, 'cell', 'id') - lat_id_key = (level_key, 'lat', 'id') - lat_x_key = (level_key, 'lat', 'x') - lat_y_key = (level_key, 'lat', 'y') - lat_z_key = (level_key, 'lat', 'z') - - # Allocate NumPy arrays for each CSG level and - # each Multi-index column in the DataFrame - level_dict[univ_key] = np.empty(num_offsets) - level_dict[cell_key] = np.empty(num_offsets) - level_dict[lat_id_key] = np.empty(num_offsets) - level_dict[lat_x_key] = np.empty(num_offsets) - level_dict[lat_y_key] = np.empty(num_offsets) - level_dict[lat_z_key] = np.empty(num_offsets) - - # Initialize Multi-index columns to NaN - this is - # necessary since some distribcell instances may - # have very different LocalCoords linked lists - level_dict[univ_key][:] = np.nan - level_dict[cell_key][:] = np.nan - level_dict[lat_id_key][:] = np.nan - level_dict[lat_x_key][:] = np.nan - level_dict[lat_y_key][:] = np.nan - level_dict[lat_z_key][:] = np.nan - - # Iterate over all regions (distribcell instances) - for offset in range(num_offsets): - coords = offsets_to_coords[offset] - - # If entire LocalCoords has been unraveled into - # Multi-index columns already, continue - if coords is None: - continue - - # Assign entry to Universe Multi-index column - if coords._type == 'universe': - univ_id = coords._universe._id - cell_id = coords._cell._id - level_dict[univ_key][offset] = univ_id - level_dict[cell_key][offset] = cell_id - - # Assign entry to Lattice Multi-index column - else: - lat_id = coords._lattice._id - lat_x = coords._lat_x - lat_y = coords._lat_y - lat_z = coords._lat_z - level_dict[lat_id_key][offset] = lat_id - level_dict[lat_x_key][offset] = lat_x - level_dict[lat_y_key][offset] = lat_y - level_dict[lat_z_key][offset] = lat_z - - # Move to next node in LocalCoords linked list - if coords._next is None: - offsets_to_coords[offset] = None - else: - offsets_to_coords[offset] = coords._next - levels_remain = True - - # Tile the Multi-index columns - for level_key, level_bins in level_dict.items(): - level_bins = \ - np.repeat(level_bins, filter.stride) - tile_factor = data_size / len(level_bins) - level_bins = np.tile(level_bins, tile_factor) - level_dict[level_key] = level_bins - - # Append the multi-index column to the DataFrame - df = pd.concat([df, pd.DataFrame(level_dict)], - axis=1) - - # Create DataFrame column for distribcell instances IDs - # NOTE: This is performed regardless of whether the user - # requests Summary geomeric information - filter_bins = np.arange(filter.num_bins) - filter_bins = np.repeat(filter_bins, filter.stride) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - df[filter.type] = filter_bins - - # energy, energyout filters - elif 'energy' in filter.type: - bins = filter.bins - num_bins = filter.num_bins - - # Create strings for - template = '{0:.1e} - {1:.1e}' - filter_bins = [] - for i in range(num_bins): - filter_bins.append(template.format(bins[i], bins[i+1])) - - # Tile the energy bins into a DataFrame column - filter_bins = np.repeat(filter_bins, filter.stride) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - df[filter.type + ' [MeV]'] = filter_bins - - # universe, material, surface, cell, and cellborn filters - else: - filter_bins = np.repeat(filter.bins, filter.stride) - tile_factor = data_size / len(filter_bins) - filter_bins = np.tile(filter_bins, tile_factor) - df[filter.type] = filter_bins + df = pd.concat([df, filter_df], axis=1) # Include DataFrame column for nuclides if user requested it if nuclides: @@ -2278,22 +2069,28 @@ class Tally(object): # Iterate over all Tally slice operands in summation prod = [scores, filters, filter_bins, nuclides] + summed_filters = defaultdict(list) for scores, filters, filter_bins, nuclides in itertools.product(*prod): tally_slice = self.get_slice(scores, filters, filter_bins, nuclides) # Remove filters summed across to avoid bulky CrossFilters - removed_filters = [] for filter in reversed(tally_slice.filters): if filter.type in filters: tally_slice.remove_filter(filter) - removed_filters.append(filter) + summed_filters[filter.type].append(filter) # Accumulate this Tally slice into the Tally sum tally_sum += tally_slice # FIXME: test if this works for filter - for filter in removed_filters: - tally_sum.add_filter(filter) + for filter_type in summed_filters: + filters = summed_filters[filter_type] + for i in range(1, len(filters)): + filters[i] = CrossFilter(filters[i-1], filters[i], '+') + tally_sum.add_filter(filters[-1]) + +# for filter in removed_filters: +# tally_sum.add_filter(filter) return tally_sum From 13b3632c311d90bd141d504cfc7c5068022ad53c Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 8 Sep 2015 00:13:23 -0400 Subject: [PATCH 008/130] Fixed Pandas MultiIndex for refactored Filter.get_pandas_dataframe(...) routine --- openmc/cross.py | 8 +++++--- openmc/filter.py | 11 +++++------ openmc/tallies.py | 23 ++++++++++++++++++++++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/openmc/cross.py b/openmc/cross.py index 05ca0f9b6..51b579553 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -352,9 +352,11 @@ class CrossFilter(object): df = self.left_filter.get_pandas_dataframe(datasize, summary) # If left and right filters are different, combine their bins else: - df = '(' + self.left_filter.get_pandas_dataframe(datasize, summary) - df += ' ' + self.binary_op + ' ' - df += self.right_filter.get_pandas_dataframe(datasize, summary) + ')' + left_df = self.left_filter.get_pandas_dataframe(datasize, summary) + right_df = self.right_filter.get_pandas_dataframe(datasize, summary) + left_df = left_df.astype(str) + right_df = right_df.astype(str) + df = '(' + left_df + ' ' + self.binary_op + ' ' + right_df + ')' return df diff --git a/openmc/filter.py b/openmc/filter.py index c24684039..35cbd1dc5 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -566,11 +566,11 @@ class Filter(object): level_bins = np.tile(level_bins, tile_factor) level_dict[level_key] = level_bins - # Initialize a Pandas DataFrame from the level dictionary - if level_df is None: - level_df = pd.DataFrame(level_dict) - else: - level_df = pd.concat([level_df, pd.DataFrame(level_dict)], axis=1) + # Initialize a Pandas DataFrame from the level dictionary + if level_df is None: + level_df = pd.DataFrame(level_dict) + else: + level_df = pd.concat([level_df, pd.DataFrame(level_dict)], axis=1) # Create DataFrame column for distribcell instances IDs # NOTE: This is performed regardless of whether the user @@ -613,7 +613,6 @@ class Filter(object): filter_bins = filter_bins df = pd.concat([df, pd.DataFrame({self.type :filter_bins})]) - df = df.astype(np.str) return df def __repr__(self): diff --git a/openmc/tallies.py b/openmc/tallies.py index 57fa911b2..9d5f4dc00 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1076,8 +1076,29 @@ class Tally(object): df['mean'] = self.mean.ravel() df['std. dev.'] = self.std_dev.ravel() - df.index.name = 'bin' df = df.dropna(axis=1) + + # Expand the columns into Pandas MultiIndices for readability + if pd.__version__ >= '0.16': + columns = copy.deepcopy(df.columns.values) + + # Convert all elements in columns list to tuples + for i, column in enumerate(columns): + if not isinstance(column, tuple): + columns[i] = (column,) + + # Make each tuple the same length + max_len_column = len(max(columns, key=len)) + for i, column in enumerate(columns): + delta_len = max_len_column - len(column) + if delta_len > 0: + new_column = list(column) + new_column.extend(['']*delta_len) + columns[i] = tuple(new_column) + + # Create and set a MultiIndex for the DataFrame's columns + df.columns = pd.MultiIndex.from_tuples(columns) + return df def export_results(self, filename='tally-results', directory='.', From 9ebc5d6793ca24b732e47afd3a14d6f0100de457 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 9 Sep 2015 19:32:26 -0400 Subject: [PATCH 009/130] Major updates to mgxs.py with preliminary testing. Scattering matrices not yet working --- openmc/mgxs/__init__.py | 3 +- openmc/mgxs/groups.py | 25 +- openmc/mgxs/mgxs.py | 623 ++++++++++++++++++++++++++++------------ openmc/statepoint.py | 6 + openmc/summary.py | 2 +- openmc/tallies.py | 18 +- 6 files changed, 472 insertions(+), 205 deletions(-) diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py index 4f5c1ea12..b6f928b09 100644 --- a/openmc/mgxs/__init__.py +++ b/openmc/mgxs/__init__.py @@ -1 +1,2 @@ -from groups import EnergyGroups \ No newline at end of file +from groups import EnergyGroups +from mgxs import * \ No newline at end of file diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 061f1c61a..be1ffd162 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -11,6 +11,7 @@ import openmc.checkvalue as cv if sys.version_info[0] >= 3: basestring = str + class EnergyGroups(object): """An energy groups structure used for multi-group cross-sections. @@ -37,10 +38,10 @@ class EnergyGroups(object): def __deepcopy__(self, memo): existing = memo.get(id(self)) - # If this is the first time we have tried to copy this object, create a copy + # If this is the first time we have tried to copy object, create copy if existing is None: clone = type(self).__new__(type(self)) - clone.group_edges = copy.deepcopy(self._group_edges, memo) + clone.group_edges = copy.deepcopy(self.group_edges, memo) memo[id(self)] = clone @@ -60,18 +61,18 @@ class EnergyGroups(object): @group_edges.setter def group_edges(self, edges): - cv.check_type('group edges', edges, Iterable, Integral) - cv.check_length('number of group edges', edges, 2) + cv.check_type('group edges', edges, Iterable, Real) + cv.check_greater_than('number of group edges', len(edges), 1) self._group_edges = np.array(edges) self._num_groups = len(edges)-1 def __eq__(self, other): if not isinstance(other, EnergyGroups): return False - elif self._group_edges != other._group_edges: + elif self.group_edges != other.group_edges: return False - def generate_bin_edges(self, start, stop, num_groups, type='linear'): + def generate_bin_edges(self, start, stop, num_groups, spacing='linear'): """Generate equally or logarithmically-spaced energy group boundaries. Parameters @@ -82,7 +83,7 @@ class EnergyGroups(object): The highest energy in MeV num_groups : Integral The number of energy groups - type : str + spacing : str The spacing between groups ('linear' or 'logarithmic') """ @@ -90,15 +91,15 @@ class EnergyGroups(object): cv.check_type('first edge', start, Real) cv.check_type('last edge', stop, Real) cv.check_type('number of groups', num_groups, Integral) - cv.check_type('type', type, basestring) + cv.check_type('spacing', spacing, basestring) cv.check_greater_than('first edge', start, 0, True) cv.check_greater_than('first edge', stop, start, False) cv.check_greater_than('number of groups', num_groups, 0) - cv.check_value('type', type, ('linear', 'logarithmic')) + cv.check_value('spacing', spacing, ('linear', 'logarithmic')) - if type == 'linear': + if spacing == 'linear': self.group_edges = np.linspace(start, stop, num_groups+1) - elif type == 'logarithmic': + elif spacing == 'logarithmic': self.group_edges = \ np.logspace(np.log10(start), np.log10(stop), num_groups+1) @@ -160,7 +161,7 @@ class EnergyGroups(object): lower = self.group_edges[self.num_groups-group] upper = self.group_edges[self.num_groups-group+1] - return (lower, upper) + return lower, upper def get_group_indices(self, groups='all'): """Returns the array indices for one or more energy groups. diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index b2019a20a..78c8cbb57 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -5,7 +5,6 @@ import sys import copy import abc import pickle -import subprocess import numpy as np @@ -19,7 +18,7 @@ if sys.version_info[0] >= 3: # Supported cross-section types -XS_TYPES = ['total', +XS_TYPES = ('total', 'transport', 'absorption', 'capture', @@ -29,20 +28,20 @@ XS_TYPES = ['total', 'nu-scatter matrix', 'fission', 'nu-fission', - 'chi'] + 'chi') # Supported domain types -DOMAIN_TYPES = ['cell', +DOMAIN_TYPES = ('cell', 'distribcell', 'universe', 'material', - 'mesh'] + 'mesh') # Supported domain objects -DOMAINS = [openmc.Cell, +DOMAINS = (openmc.Cell, openmc.Universe, openmc.Material, - openmc.Mesh] + openmc.Mesh) # LaTeX Greek symbols for each cross-section type GREEK = dict() @@ -132,11 +131,11 @@ class MultiGroupXS(object): self._offset = None self.name = name - if not domain_type is None: + if domain_type is not None: self.domain_type = domain_type - if not domain is None: + if domain is not None: self.domain = domain - if not energy_groups is None: + if energy_groups is not None: self.energy_groups = energy_groups def __deepcopy__(self, memo): @@ -151,8 +150,9 @@ class MultiGroupXS(object): clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._num_groups = self.num_groups - clone._xs_tally = copy.deepcopy(self.xs_tally, memo) - clone._subdomain_indices = copy.deepcopy(self.subdomain_indices, memo) + clone._xs_tally = copy.deepcopy(self._xs_tally, memo) + clone._subdomain_indices = \ + copy.deepcopy(self.subdomain_indices, memo) clone._offset = copy.deepcopy(self.offset, memo) clone._tallies = dict() @@ -217,14 +217,14 @@ class MultiGroupXS(object): @domain_type.setter def domain_type(self, domain_type): - cv.check_type('domain type', domain_type, DOMAIN_TYPES) + cv.check_value('domain type', domain_type, DOMAIN_TYPES) self._domain_type = domain_type @energy_groups.setter def energy_groups(self, energy_groups): cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) self._energy_groups = energy_groups - self._num_groups = energy_groups._num_groups + self._num_groups = energy_groups.num_groups def _find_domain_offset(self): """Finds and stores the offset of the domain tally filter""" @@ -255,7 +255,7 @@ class MultiGroupXS(object): self._subdomain_indices[subdomain_id] = index @abc.abstractmethod - def _create_tallies(self, scores, all_filters, keys, estimator): + def create_tallies(self, scores, all_filters, keys, estimator): """Instantiates tallies needed to compute the multi-group cross-section This is a helper method for MultiGroupXS subclasses to create tallies @@ -274,7 +274,7 @@ class MultiGroupXS(object): """ - cv.check_value('scores', scores, openmc.SCORE_TYPES) + cv.check_iterable_type('scores', scores, basestring) cv.check_iterable_type('filters', all_filters, openmc.Filter, 1, 2) cv.check_type('keys', keys, Iterable, basestring) cv.check_length('scores', scores, len(keys)) @@ -383,7 +383,10 @@ class MultiGroupXS(object): return subdomains def get_xs(self, groups='all', subdomains='all', value='mean'): - """ + """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. Parameters ---------- @@ -409,7 +412,7 @@ class MultiGroupXS(object): """ - if self.xs_tally is None: + if self._xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) @@ -418,26 +421,30 @@ class MultiGroupXS(object): # Construct a collection of the domain filter bins if subdomains != 'all': - cv.check_value('subdomains', subdomains, Iterable, Integral) + cv.check_iterable_type('subdomains', subdomains, Integral) filters.append(self.domain_type) filter_bins.append(tuple(subdomains)) + # Construct list of energy group bounds tuples for all requested groups if groups != 'all': - cv.check_value('groups', groups, Iterable, Integral) + cv.check_iterable_type('groups', groups, Integral) filters.append('energy') - filter_bins.append(self.energy_groups.get_group_bounds(groups)) + for group in groups: + filter_bins.append(self.energy_groups.get_group_bounds(group)) # Query the multi-group cross-section tally for the data - xs = self.xs_tally.get_values(filters=filters, + xs = self._xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) return xs def get_condensed_xs(self, coarse_groups): - """This routine takes in a collection of 2-tuples of energy groups""" + """ - cv.check_value('coarse groups', coarse_groups, EnergyGroups) + :param coarse_groups: + :return: + """ - # FIXME: this should use the Tally.slice(...) routine + raise NotImplementedError('Energy condensation is not yet implemented') def get_subdomain_avg_xs(self, subdomains='all'): """Construct a subdomain-averaged version of this cross-section. @@ -450,31 +457,46 @@ class MultiGroupXS(object): Returns ------- MultiGroupXS - This MultiGroupXS averaged across subdomains of interest + A new MultiGroupXS averaged across the subdomains of interest + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. """ + if self._xs_tally is None: + msg = 'Unable to get cross-section since it has not been computed' + raise ValueError(msg) + + # Construct a collection of the subdomain filter bins to average across + # FIXME: Make Tally.summation take single rather than nested tuples if subdomains != 'all': - cv.check_value('subdomains', subdomains, Iterable, Integral) + cv.check_iterable_type('subdomains', subdomains, Integral) + subdomain_indices = self.get_subdomain_indices(subdomains) + subdomain_indices = [(index,) for index in subdomain_indices] + # Clone this MultiGroupXS to initialize the condensed version avg_xs = copy.deepcopy(self) + avg_xs.domain_type = 'avg. ' + avg_xs.domain_type + # Reset subdomain indices and offsets for distribcell domains if self.domain_type == 'distribcell': - avg_xs.domain_type = 'cell' avg_xs._subdomain_indices = {} avg_xs._offset = 0 - # Spatially average each tally - for key, old_tally in avg_xs.tallies.items(): - # FIXME: Need to create Tally.mean(...) - slice_tally = old_tally.slice(filters=[avg_xs.domain_type], - filter_bins=[tuple(subdomains)]) - avg_tally = slice_tally.mean(filters=[avg_xs.domain_type], - filter_bins=[tuple(subdomains)]) - avg_xs.tallies[key] = avg_tally - - avg_xs.compute_xs() + # Overwrite tallies with new subdomain-averaged versions + avg_xs._tallies = {} + for tally_type, tally in self.tallies.items(): + tally_sum = tally.summation(filters=[self.domain_type], + filter_bins=subdomain_indices) + tally_sum /= len(subdomains) + avg_xs.tallies[tally_type] = tally_sum + # Compute the condensed single group cross-section + avg_xs.compute_xs() return avg_xs def print_xs(self, subdomains='all'): @@ -485,17 +507,27 @@ class MultiGroupXS(object): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross-sections to include in the report + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + """ + if self._xs_tally is None: + msg = 'Unable to print cross-section since it has not been computed' + raise ValueError(msg) + if subdomains != 'all': - cv.check_value('subdomains', subdomains, Iterable, Integral) + cv.check_iterable_type('subdomains', subdomains, Integral) string = 'Multi-Group XS\n' string += '{0: <16}=\t{1}\n'.format('\tType', self.xs_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 self.xs_tally is not None: + if self._xs_tally is not None: if subdomains == 'all': subdomains = self.get_subdomain_indices() @@ -503,15 +535,15 @@ class MultiGroupXS(object): for subdomain in subdomains: if self.domain_type == 'distribcell': - string += '{0: <16}=\t{1}\n'.format('\tSubDomain', subdomain) + string += '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + 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): + for group in range(1, self.num_groups+1): bounds = self.energy_groups.get_group_bounds(group) - string += '{0: <12}Group {1} [{2: <10} - ' \ - '{3: <10}MeV]:\t'.format('', group, bounds[0], bounds[1]) + string += template.format('', group, bounds[0], bounds[1]) average = self.get_xs([group], [subdomain], 'mean') rel_err = self.get_xs([group], [subdomain], 'rel_err')*100. string += '{:.2e}+/-{:1.2e}%'.format(average, rel_err) @@ -529,6 +561,7 @@ class MultiGroupXS(object): Filename for the pickled binary file (default is 'mgxs') directory : str Directory for the pickled binary file (default is 'mgxs') + """ cv.check_type('filename', filename, basestring) @@ -548,16 +581,16 @@ class MultiGroupXS(object): xs_results['domain'] = self.domain xs_results['energy_groups'] = self.energy_groups xs_results['tallies'] = self.tallies - xs_results['xs_tally'] = self.xs_tally - xs_results['offset'] = self._offset - xs_results['subdomain_indices'] = self._subdomain_indices + xs_results['xs_tally'] = self._xs_tally + xs_results['offset'] = self.offset + xs_results['subdomain_indices'] = self.subdomain_indices # Pickle the MultiGroupXS results to a binary file filename = directory + '/' + filename + '.pkl' filename = filename.replace(' ', '-') pickle.dump(xs_results, open(filename, 'wb')) - def restore_from_file(self, filename='mgxs', directory='mgxs'): + def unpickle(self, filename='mgxs', directory='mgxs'): """Restore the MultiGroupXS from a pickled binary file. Parameters @@ -566,6 +599,12 @@ class MultiGroupXS(object): Filename for the pickled binary file (default is 'mgxs') directory : str Directory for the pickled binary file (default is 'mgxs') + + Raises + ------ + ValueError + When the requested filename does not exist. + """ cv.check_type('filename', filename, basestring) @@ -589,50 +628,154 @@ class MultiGroupXS(object): self.domain = xs_results['domain'] self.energy_groups = xs_results['energy_groups'] self.tallies = xs_results['tallies'] - self.xs_tally = xs_results['xs_tally'] + self._xs_tally = xs_results['xs_tally'] self._offset = xs_results['offset'] self._subdomain_indices = xs_results['subdomain_indices'] - def export_xs_data(self, subdomains='all', filename='mgxs', - directory='mgxs', format='hdf5', append=True): - """Export the multi-group cross-secttion data to a file. + def load_from_statepoint(self, statepoint): + """Find tallies in an OpenMC StatePoint with the data needed to compute + multi-group cross-sections. - This routine leverages the functionality in the Pandas library to - export DataFrames to CSV, HDF5, LaTeX and PDF files. + This method is needed to compute cross-section data from tallies + in an OpenMC StatePoint object. + + Parameters + ---------- + statepoint : openmc.StatePoint + An OpenMC StatePoint object with tally data + + """ + + cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) + + statepoint.read_results() + + # Create Tallies to search for in StatePoint + if self.tallies is None: + self.create_tallies() + + # Find and store Tallies in StatePoint + for tally_type, tally in self.tallies.items(): + print('getting tally type {}'.format(tally_type)) + print(tally) + sp_tally = statepoint.get_tally(tally.scores, tally.filters, + tally.nuclides, + estimator=tally.estimator) + self.tallies[tally_type] = sp_tally + + def build_hdf5_store(self, filename='mgxs', directory='mgxs', + append=True, key=None): + """ + + :param filename: + :param directory: + :param append: + :param key: + :return: + """ + + # FIXME: + import h5py + raise NotImplementedError('HDF5 storage is not yet implemented') + + def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv'): + """Export the multi-group cross-section data to a file. + + This routine leverages the functionality in the Pandas library to + export the multi-group cross-section data in a variety of output + file formats for storage and/or post-processing. Parameters ---------- - subdomains : Iterable of Integral or 'all' filename : str Filename for the exported file (default is 'mgxs') directory : str Directory for the exported file (default is 'mgxs') - format : {'csv', 'hdf5', 'latex', 'pdf'} + format : {'csv', 'excel', 'pickle', 'latex'} The format for the exported data file - append : bool - If True (default), appends to an existing file if possible + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + """ - if subdomains != 'all': - cv.check_type('submdomains', subdomains, Iterable, Integral) + if self._xs_tally is None: + msg = 'Unable to export cross-section since it has not been computed' + raise ValueError(msg) + cv.check_type('filename', filename, basestring) cv.check_type('directory', directory, basestring) - cv.check_values('format', format, ['hdf5', 'pickle']) - cv.check_type('append', append, bool) + cv.check_values('format', format, ['csv', 'excel', 'pickle', 'latex']) # Make directory if it does not exist if not os.path.exists(directory): os.makedirs(directory) - # FIXME: Use pandas dataframes!! + filename = directory + '/' + filename + filename = filename.replace(' ', '-') + + # Get a Pandas DataFrame for the data + df = self.get_pandas_dataframe() + + # Export the data using Pandas IO API + if format == 'csv': + df.to_csv(filename + '.csv') + elif format == 'excel': + df.to_excel(filename + '.xslx') + elif format == 'pickle': + df.to_pickle(filename + '.pkl') + elif format == 'latex': + # FIXME: Insert greek letters + df.to_latex(filename + '.tex') + + def get_pandas_dataframe(self): + """Build a Pandas DataFrame for the MultiGroupXS data. + + This routine leverages the Tally.get_pandas_dataframe(...) routine, but + renames the columns with terminology appropriate for cross-section data. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame for the cross-section data. + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + + """ + + if self._xs_tally is None: + msg = 'Unable to get Pandas DataFrame since the ' \ + 'cross-section has not been computed' + raise ValueError(msg) + + # TODO: Reset column labels as cross-sections if needed + df = self._xs_tally.get_pandas_dataframe() + return df + + def from_statepoint(self, sp): + """ + + :return: + """ + + # Get the tallies from a statepoint file + class TotalXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(TotalXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(TotalXS, self).__init__(domain, domain_type, groups, name) self.xs_type = 'total' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'total'] @@ -644,23 +787,27 @@ class TotalXS(MultiGroupXS): energy_filter = openmc.Filter('energy', group_edges) filters = [[energy_filter], [energy_filter]] - # Intialize the Tallies - super(TotalXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(TotalXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['total'] / self.tallies['flux'] + """Computes the multi-group total cross-sections using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['total'] / self.tallies['flux'] class TransportXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(TransportXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(TransportXS, self).__init__(domain, domain_type, groups, name) self.xs_type = 'transport' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created - scores = ['flux', 'total', 'scatter-1'] + scores = ['flux', 'total', 'scatter-P1'] estimator = 'analog' keys = scores @@ -671,20 +818,29 @@ class TransportXS(MultiGroupXS): filters = [[energy_filter], [energy_filter], [energyout_filter]] # Initialize the Tallies - super(TransportXS, self)._create_tallies(scores, filters, keys, estimator) + super(TransportXS, self).create_tallies(scores, filters, keys, estimator) + + def load_from_statepoint(self, statepoint): + super(TransportXS, self).load_from_statepoint(statepoint) + scatter_p1 = self.tallies['scatter-P1'] + self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) def compute_xs(self): - self.xs_tally = self.tallies['total'] - self.tallies['scatter-1'] - self.xs_tally /= self.tallies['flux'] + """Computes the multi-group transport cross-sections using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] + self._xs_tally /= self.tallies['flux'] class AbsorptionXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(AbsorptionXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(AbsorptionXS, self).__init__(domain, domain_type, groups, name) self.xs_type = 'absorption' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'absorption'] @@ -696,20 +852,24 @@ class AbsorptionXS(MultiGroupXS): energy_filter = openmc.Filter('energy', group_edges) filters = [[energy_filter], [energy_filter]] - # Intialize the Tallies - super(AbsorptionXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(AbsorptionXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['absorption'] / self.tallies['flux'] + """Computes the multi-group absorption cross-sections using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['absorption'] / self.tallies['flux'] class CaptureXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(CaptureXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(CaptureXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'capture' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'absorption', 'fission'] @@ -721,21 +881,25 @@ class CaptureXS(MultiGroupXS): energy_filter = openmc.Filter('energy', group_edges) filters = [[energy_filter], [energy_filter], [energy_filter]] - # Intialize the Tallies - super(CaptureXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(CaptureXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['absorption'] - self.tallies['fission'] - self.xs_tally /= self.tallies['flux'] + """Computes the multi-group capture cross-sections using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['absorption'] - self.tallies['fission'] + self._xs_tally /= self.tallies['flux'] class FissionXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, energy_groups=None): - super(FissionXS, self).__init__(name, domain, domain_type, energy_groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(FissionXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'fission' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'fission'] @@ -743,24 +907,28 @@ class FissionXS(MultiGroupXS): keys = scores # Create the non-domain specific Filters for the Tallies - group_edges = self._energy_groups._group_edges + group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) filters = [[energy_filter], [energy_filter]] - # Intialize the Tallies - super(FissionXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(FissionXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['fission'] / self.tallies['flux'] + """Computes the multi-group fission cross-sections using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['fission'] / self.tallies['flux'] class NuFissionXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(NuFissionXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(NuFissionXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'nu-fission' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'nu-fission'] @@ -772,20 +940,24 @@ class NuFissionXS(MultiGroupXS): energy_filter = openmc.Filter('energy', group_edges) filters = [[energy_filter], [energy_filter]] - # Intialize the Tallies - super(NuFissionXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(NuFissionXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] + """Computes the multi-group nu-fission cross-sections using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] class ScatterXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, energy_groups=None): - super(ScatterXS, self).__init__(name, domain, domain_type, energy_groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(ScatterXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'scatter' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'scatter'] @@ -798,19 +970,23 @@ class ScatterXS(MultiGroupXS): filters = [[energy_filter], [energy_filter]] # Intialize the Tallies - super(ScatterXS, self)._create_tallies(scores, filters, keys, estimator) + super(ScatterXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['scatter'] / self.tallies['flux'] + """Computes the scattering multi-group cross-sections using + OpenMC tally arithmetic""" + + self._xs_tally = self.tallies['scatter'] / self.tallies['flux'] class NuScatterXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(NuScatterXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(NuScatterXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'nu-scatter' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter'] @@ -822,68 +998,135 @@ class NuScatterXS(MultiGroupXS): energy_filter = openmc.Filter('energy', group_edges) filters = [[energy_filter], [energy_filter]] - # Intialize the Tallies - super(NuScatterXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(NuScatterXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] + """Computes the nu-scattering multi-group cross-section using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] class ScatterMatrixXS(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(ScatterMatrixXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'scatter matrix' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created - scores = ['flux', 'scatter', 'scatter-1'] + scores = ['flux', 'scatter', 'scatter-P1'] estimator = 'analog' keys = scores # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - energyout_filter = openmc.Filter('energyout', group_edges) - filters = [[energy_filter], [energy_filter, energyout_filter], [energyout_filter]] + energy = openmc.Filter('energy', group_edges) + energyout = openmc.Filter('energyout', group_edges) + filters = [[energy], [energy, energyout], [energyout]] - # Intialize the Tallies - super(ScatterMatrixXS, self)._create_tallies(scores, filters, keys, estimator) + # Initialize the Tallies + super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) + + def load_from_statepoint(self, statepoint): + super(ScatterMatrixXS, self).load_from_statepoint(statepoint) + scatter_p1 = self.tallies['scatter-P1'] + self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) def compute_xs(self): - self.xs_tally = self.tallies['scatter'] - self.tallies['scatter-1'] - self.xs_tally /= self.tallies['flux'] + """Computes the multi-group scattering matrix using OpenMC + tally arithmetic""" - def get_condensed_xs(self, coarse_groups): - """This routine takes in a collection of 2-tuples of energy groups""" - - cv.check_value('coarse groups', coarse_groups, EnergyGroups) - - # FIXME: this should use the Tally.slice(...) routine - - # Error checking for the group bounds is done here - new_groups = self.energy_groups.getCondensedGroups(coarse_groups) - num_coarse_groups = new_groups._num_groups + self._xs_tally = self.tallies['scatter'] - self.tallies['scatter-P1'] + self._xs_tally /= self.tallies['flux'] def get_xs(self, in_groups='all', out_groups='all', - subdomains='all', value='mean'): + subdomains='all', value='mean'): + """Returns an array of multi-group cross-sections. - if self.xs_tally is None: + 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 + ---------- + in_groups : Iterable of Integral or 'all' + Incoming energy groups of interest + out_groups : Iterable of Integral or 'all' + Outgoing energy groups of interest + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest + value : str + A string for the type of value to return - 'mean' (default), + 'std_dev' or 'rel_err' are accepted + + Returns + ------- + xs : ndarray + A NumPy array of the multi-group cross-section indexed in the order + each group and subdomain is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + + """ + + if self._xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) cv.check_value('value', value, ['mean', 'std. dev.', 'rel. err.']) - if in_groups != 'all': - cv.check_value('in groups', in_groups, Iterable, Integral) - if out_groups != 'all': - cv.check_value('out groups', out_groups, Iterable, Integral) - if subdomains != 'all': - cv.check_value('subdomains', subdomains, Iterable, Integral) - # FIXME: Make this use Tally.get_values() + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if subdomains != 'all': + cv.check_iterable_type('subdomains', subdomains, Integral) + filters.append(self.domain_type) + filter_bins.append(tuple(subdomains)) + + # Construct list of energy group bounds tuples for all requested groups + if in_groups != 'all': + cv.check_iterable_type('in_groups', in_groups, Integral) + filters.append('energy') + for in_group in in_groups: + filter_bins.append(self.energy_groups.get_group_bounds(in_group)) + if out_groups != 'all': + cv.check_iterable_type('out_groups', out_groups, Integral) + filters.append('energy') + for out_group in out_groups: + filter_bins.append(self.energy_groups.get_group_bounds(out_group)) + + # Query the multi-group cross-section tally for the data + xs = self._xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + return xs def print_xs(self, subdomains='all'): + """Prints a string representation for the multi-group cross-section. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + The subdomain IDs of the cross-sections to include in the report + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + + """ + + if self._xs_tally is None: + msg = 'Unable to print cross-section since it has not been computed' + raise ValueError(msg) if subdomains != 'all': cv.check_value('subdomains', subdomains, Iterable, Integral) @@ -894,69 +1137,80 @@ class ScatterMatrixXS(MultiGroupXS): string += '{0: <16}{1}{2}\n'.format('\tDomain ID', '=\t', self.domain.id) string += '{0: <16}\n'.format('\tEnergy Groups:') + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' # Loop over energy groups ranges - for group in range(1,self.num_groups+1): + for group in range(1, self.num_groups+1): bounds = self.energy_groups.get_group_bounds(group) - string += '{0: <12}Group {1} [{2: <10} - ' \ - '{3: <10}MeV]\n'.format('', group, bounds[0], bounds[1]) + string += template.format('', group, bounds[0], bounds[1]) if subdomains == 'all': - subdomains = self._subdomain_indices.keys() + subdomains = self.subdomain_indices.keys() + # Loop over all subdomains for subdomain in subdomains: if self.domain_type == 'distribcell': - string += '{0: <16}{1}{2}\n'.format('\tSubDomain', '=\t', subdomain) + string += \ + '{0: <16}{1}{2}\n'.format('\tSubdomain', '=\t', subdomain) string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + template = '{0: <12}Group {1} -> Group {2}:\t\t' - # Loop over energy groups ranges - for in_group in range(1,self.num_groups+1): - for out_group in range(1,self.num_groups+1): - string += '{0: <12}Group {1} -> Group {2}:\t\t'.format('', in_group, out_group) - average = self.get_xs([in_group], [out_group], [subdomain], 'mean') - rel_err = self.get_xs([in_group], [out_group], [subdomain], 'rel. err.') - string += '{:.2e}+/-{:1.2e}%'.format(average[0,0,0], rel_err[0,0,0]) + # Loop over incoming/outgoing energy groups ranges + for in_group in range(1, self.num_groups+1): + for out_group in range(1, self.num_groups+1): + string += template.format('', in_group, out_group) + average = self.get_xs([in_group], [out_group], + [subdomain], 'mean') + rel_err = self.get_xs([in_group], [out_group], + [subdomain], 'rel. err.')*100. + string += '{:.2e}+/-{:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' + print(string) class NuScatterMatrixXS(ScatterMatrixXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(NuScatterMatrixXS, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, name) self.xs_type = 'nu-scatter matrix' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created - scores = ['flux', 'nu-scatter', 'scatter-1'] + scores = ['flux', 'nu-scatter', 'scatter-P1'] estimator = 'analog' keys = scores # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - energyout_filter = openmc.Filter('energyout', group_edges) - filters = [[energy_filter], [energy_filter, energyout_filter], [energyout_filter]] + energy = openmc.Filter('energy', group_edges) + energyout = openmc.Filter('energyout', group_edges) + filters = [[energy], [energy, energyout], [energyout]] # Intialize the Tallies - super(ScatterMatrixXS, self)._create_tallies(scores, filters, keys, estimator) + super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - self.xs_tally = self.tallies['nu-scatter'] - self.tallies['scatter-1'] - self.xs_tally /= self.tallies['flux'] + """Computes the multi-group nu-scattering matrix using OpenMC + tally arithmetic""" + + self._xs_tally = self.tallies['nu-scatter'] - self.tallies['scatter-P1'] + self._xs_tally /= self.tallies['flux'] class Chi(MultiGroupXS): - def __init__(self, name='', domain=None, domain_type=None, groups=None): - super(Chi, self).__init__(name, domain, domain_type, groups) + def __init__(self, domain=None, domain_type=None, groups=None, name=''): + super(Chi, self).__init__(domain, domain_type, groups, name) self._xs_type = 'chi' def create_tallies(self): + """Construct the OpenMC tallies needed to compute this cross-section.""" # Create a list of scores for each Tally to be created scores = ['nu-fission', 'nu-fission'] @@ -964,46 +1218,43 @@ class Chi(MultiGroupXS): keys = ['nu-fission-in', 'nu-fission-out'] # Create the non-domain specific Filters for the Tallies - group_edges = self._energy_groups._group_edges + group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) energyout_filter = openmc.Filter('energyout', group_edges) filters = [[energy_filter], [energyout_filter]] # Intialize the Tallies - super(Chi, self)._create_tallies(scores, filters, keys, estimator) + super(Chi, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): + """Computes chi fission spectrum using OpenMC tally arithmetic""" - # Extract and clean the Tally data - tally_data, zero_indices = super(Chi, self).getAllTallyData() - nu_fission_in = tally_data['nu-fission-in'] - nu_fission_out = tally_data['nu-fission-out'] + nu_fission_in = self.tallies['nu-fission-in'] + nu_fission_out = self.tallies['nu-fission-out'] - # Set any zero reaction rates to -1 - nu_fission_in[0, zero_indices['nu-fission-in']] = -1. + # FIXME: Make filter bins simpler in Tally.summation(...) - # FIXME - uncertainty propagation - self._xs_tally = infermc.error_prop.arithmetic.divide_by_scalar(nu_fission_out, - nu_fission_in.sum(2)[0, :, np.newaxis, ...], - corr, False) + # Construct energy group filter bins to sum across + filter_bins = [] + for group in range(self.num_groups): + group_bounds = self.energy_groups.get_group_bounds(group) + filter_bins.append((group_bounds,)) + energy_bins = [filter_bins] - # Compute the total across all groups per subdomain - norm = self._xs_tally.sum(2)[0, :, np.newaxis, ...] + sum_nu_fission_in = nu_fission_in.summation(filters=['energyout'], + filter_bins=energy_bins) + self._xs_tally = nu_fission_out / sum_nu_fission_in - # Set any zero norms (in non-fissionable domains) to -1 - norm_indices = norm == 0. - norm[norm_indices] = -1. + # Compute the total across all groups per subdomain + if self.domain_type == 'distribcell': + subdomain_indices = self.get_subdomain_indices() + filter_bins = [(i,) for i in subdomain_indices] + else: + filter_bins = [(self.domain,)] - # Normalize chi to 1.0 - # FIXME - uncertainty propagation - self._xs_tally = infermc.error_prop.arithmetic.divide_by_scalar(self._xs_tally, norm, - corr, False) + # Normalize chi to 1.0 + norm = self._xs_tally.summation(filters=[self.domain_type], + filter_bins=filter_bins) + self._xs_tally /= norm - # For any region without flux or reaction rate, convert xs to zero - self._xs_tally[:, norm_indices] = 0. - - # FIXME - uncertainty propagation - this is just a temporary fix - self._xs_tally[1, ...] = 0. - - # Correct -0.0 to +0.0 - self._xs_tally += 0. \ No newline at end of file + # FIXME: Does this need to reset NaNs to zero? \ No newline at end of file diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 6a4713e91..5d385b548 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -663,6 +663,8 @@ class StatePoint(object): # Iterate over all tallies to find the appropriate one for tally_id, test_tally in self.tallies.items(): + print(test_tally) + # Determine if Tally has queried name if name and name != test_tally.name: continue @@ -673,6 +675,7 @@ class StatePoint(object): # Determine if Tally has queried estimator if estimator and not estimator == test_tally.estimator: + print('estimator') continue # Determine if Tally has the queried score(s) @@ -686,6 +689,7 @@ class StatePoint(object): break if not contains_scores: + print('scores') continue # Determine if Tally has the queried Filter(s) @@ -699,6 +703,7 @@ class StatePoint(object): break if not contains_filters: + print('filters') continue # Determine if Tally has the queried Nuclide(s) @@ -712,6 +717,7 @@ class StatePoint(object): break if not contains_nuclides: + print('nuclides') continue # If the current Tally met user's request, break loop and return it diff --git a/openmc/summary.py b/openmc/summary.py index 7f9d5387e..0734e7782 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -264,7 +264,7 @@ class Summary(object): if maps > 0: offset = self._f['geometry/cells'][key]['offset'][...] - cell.set_offset(offset) + cell.offsets = offset translated = self._f['geometry/cells'][key]['translated'][0] if translated: diff --git a/openmc/tallies.py b/openmc/tallies.py index 9d5f4dc00..6165dc677 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -114,10 +114,10 @@ class Tally(object): clone.estimator = self.estimator clone.num_score_bins = self.num_score_bins clone.num_realizations = self.num_realizations - clone._sum = copy.deepcopy(self.sum, memo) - clone._sum_sq = copy.deepcopy(self.sum_sq, memo) - clone._mean = copy.deepcopy(self.mean, memo) - clone._std_dev = copy.deepcopy(self.std_dev, memo) + clone._sum = copy.deepcopy(self._sum, memo) + clone._sum_sq = copy.deepcopy(self._sum_sq, memo) + clone._mean = copy.deepcopy(self._mean, memo) + clone._std_dev = copy.deepcopy(self._std_dev, memo) clone._with_summary = self.with_summary clone._with_batch_statistics = self.with_batch_statistics clone._derived = self.derived @@ -828,7 +828,7 @@ class Tally(object): parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin in the list is the integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer for the - cell instance ID for 'distribcell Filters. Each bin is a 2-tuple of + cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of floats for 'energy' and 'energyout' filters corresponding to the energy boundaries of the bin of interest. The bin is a (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of @@ -2128,6 +2128,14 @@ class TalliesFile(object): self._meshes = [] self._tallies_file = ET.Element("tallies") + @property + def tallies(self): + return self._tallies + + @property + def meshes(self): + return self._meshes + def add_tally(self, tally, merge=False): """Add a tally to the file From 5bfab3a48191271941bab2f1c0f75ded651227f2 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 11 Sep 2015 00:26:11 -0400 Subject: [PATCH 010/130] Major bug fixes and extensions to tally arithmetic for MGXS generation --- openmc/cross.py | 17 +- openmc/filter.py | 57 ++++- openmc/mesh.py | 31 +-- openmc/mgxs/mgxs.py | 85 +++++-- openmc/statepoint.py | 7 - openmc/tallies.py | 532 ++++++++++++++++++++++++++++++++++--------- 6 files changed, 564 insertions(+), 165 deletions(-) diff --git a/openmc/cross.py b/openmc/cross.py index 51b579553..cb1e4930b 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -192,12 +192,13 @@ class CrossFilter(object): left_type = left_filter.type right_type = right_filter.type - self.type = '({0} {1} {2})'.format(left_type, binary_op, right_type) + self._type = '({0} {1} {2})'.format(left_type, binary_op, right_type) self._bins = {} self._bins['left'] = left_filter.bins self._bins['right'] = right_filter.bins self._num_bins = left_filter.num_bins * right_filter.num_bins + self._stride = None self._left_filter = None self._right_filter = None @@ -211,7 +212,7 @@ class CrossFilter(object): self.binary_op = binary_op def __hash__(self): - return hash((self.type, self.bins)) + return hash((self.left_filter, self.right_filter)) def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -224,6 +225,8 @@ class CrossFilter(object): clone._type = self.type clone._bins = self.bins clone._num_bins = self.num_bins + clone._stride = self.stride + memo[id(self)] = clone return clone @@ -258,7 +261,8 @@ class CrossFilter(object): @property def stride(self): - return self.left_filter.stride * self.right_filter.stride + return self._stride +# return self.left_filter.stride * self.right_filter.stride @type.setter def type(self, filter_type): @@ -276,9 +280,16 @@ class CrossFilter(object): def binary_op(self, binary_op): self._binary_op = binary_op + @stride.setter + def stride(self, stride): + self._stride = stride + def __eq__(self, other): return str(other) == str(self) + def __ne__(self, other): + return not self == other + def get_bin_index(self, filter_bin): """Returns the index in the CrossFilter for some bin. diff --git a/openmc/filter.py b/openmc/filter.py index 35cbd1dc5..52c927bed 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -42,24 +42,23 @@ class Filter(object): self._offset = -1 self._stride = None - def __eq__(self, filter2): - # Check type - if self.type != filter2.type: + def __eq__(self, other): + if not isinstance(other, Filter): return False - - # Check number of bins - elif len(self.bins) != len(filter2.bins): + elif self.type != other.type: return False - - # Check bin edges - elif not np.allclose(self.bins, filter2.bins): + elif len(self.bins) != len(other.bins): + return False + elif not np.allclose(self.bins, other.bins): return False - else: return True + def __ne__(self, other): + return not self == other + def __hash__(self): - return hash((self._type, self._bins)) + return hash((self._type, tuple(self._bins))) def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -121,6 +120,7 @@ class Filter(object): def bins(self, bins): if bins is None: self.num_bins = 0 + return elif self._type is None: msg = 'Unable to set bins for Filter to "{0}" since ' \ 'the Filter type has not yet been set'.format(bins) @@ -321,7 +321,8 @@ class Filter(object): # Filter bins for distribcell are the "IDs" of each unique placement # of the Cell in the Geometry (integers starting at 0) elif self.type == 'distribcell': - filter_index = filter_bin + val = np.where(self.bins == filter_bin)[0][0] + filter_index = val # Use ID for all other Filters (e.g., material, cell, etc.) else: @@ -335,6 +336,38 @@ class Filter(object): return filter_index + def get_bin(self, bin_index): + """ + + :param bin_index: + :return: + """ + + cv.check_type('bin_index', bin_index, Integral) + cv.check_greater_than('bin_index', bin_index, 0, equality=True) + cv.check_less_than('bin_index', bin_index, self.num_bins) + + if self.type == 'mesh': + + if (len(self.mesh.dimension) == 3): + nx, ny, nz = self.mesh.dimension + x = bin_index / (ny * nz) + y = (bin_index - (x * ny * nz)) / nz + z = bin_index - (x * ny * nz) - (y * nz) + bin = (x, y, z) + else: + nx, ny = self.mesh.dimension + x = bin_index / ny + y = bin_index - (x * ny) + bin = (x, y) + + elif self.type in ['energy', 'energyout']: + bin = (self.bins[bin_index], self.bins[bin_index+1]) + else: + bin = (self.bins[bin_index],) + + return bin + def get_pandas_dataframe(self, data_size, summary=None): """Builds a Pandas DataFrame for the Filter's bins. diff --git a/openmc/mesh.py b/openmc/mesh.py index 7e907aaa5..ddf3529c2 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -4,8 +4,9 @@ from numbers import Real, Integral from xml.etree import ElementTree as ET import sys -from openmc.checkvalue import (check_type, check_length, check_value, - check_greater_than) +import numpy as np + +import openmc.checkvalue as cv if sys.version_info[0] >= 3: basestring = str @@ -142,45 +143,45 @@ class Mesh(object): self._id = AUTO_MESH_ID AUTO_MESH_ID += 1 else: - check_type('mesh ID', mesh_id, Integral) - check_greater_than('mesh ID', mesh_id, 0) + cv.check_type('mesh ID', mesh_id, Integral) + cv.check_greater_than('mesh ID', mesh_id, 0) self._id = mesh_id @name.setter def name(self, name): - check_type('name for mesh ID="{0}"'.format(self._id), name, basestring) + cv.check_type('name for mesh ID="{0}"'.format(self._id), name, basestring) self._name = name @type.setter def type(self, meshtype): - check_type('type for mesh ID="{0}"'.format(self._id), + cv.check_type('type for mesh ID="{0}"'.format(self._id), meshtype, basestring) - check_value('type for mesh ID="{0}"'.format(self._id), + cv.check_value('type for mesh ID="{0}"'.format(self._id), meshtype, ['rectangular', 'hexagonal']) self._type = meshtype @dimension.setter def dimension(self, dimension): - check_type('mesh dimension', dimension, Iterable, Integral) - check_length('mesh dimension', dimension, 2, 3) + cv.check_type('mesh dimension', dimension, Iterable, Integral) + cv.check_length('mesh dimension', dimension, 2, 3) self._dimension = dimension @lower_left.setter def lower_left(self, lower_left): - check_type('mesh lower_left', lower_left, Iterable, Real) - check_length('mesh lower_left', lower_left, 2, 3) + cv.check_type('mesh lower_left', lower_left, Iterable, Real) + cv.check_length('mesh lower_left', lower_left, 2, 3) self._lower_left = lower_left @upper_right.setter def upper_right(self, upper_right): - check_type('mesh upper_right', upper_right, Iterable, Real) - check_length('mesh upper_right', upper_right, 2, 3) + cv.check_type('mesh upper_right', upper_right, Iterable, Real) + cv.check_length('mesh upper_right', upper_right, 2, 3) self._upper_right = upper_right @width.setter def width(self, width): - check_type('mesh width', width, Iterable, Real) - check_length('mesh width', width, 2, 3) + cv.check_type('mesh width', width, Iterable, Real) + cv.check_length('mesh width', width, 2, 3) self._width = width def __repr__(self): diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 78c8cbb57..39eb79160 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -656,8 +656,6 @@ class MultiGroupXS(object): # Find and store Tallies in StatePoint for tally_type, tally in self.tallies.items(): - print('getting tally type {}'.format(tally_type)) - print(tally) sp_tally = statepoint.get_tally(tally.scores, tally.filters, tally.nuclides, estimator=tally.estimator) @@ -795,6 +793,8 @@ class TotalXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['total'] / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class TransportXS(MultiGroupXS): @@ -831,6 +831,8 @@ class TransportXS(MultiGroupXS): self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class AbsorptionXS(MultiGroupXS): @@ -860,6 +862,8 @@ class AbsorptionXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['absorption'] / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class CaptureXS(MultiGroupXS): @@ -890,6 +894,8 @@ class CaptureXS(MultiGroupXS): self._xs_tally = self.tallies['absorption'] - self.tallies['fission'] self._xs_tally /= self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class FissionXS(MultiGroupXS): @@ -919,6 +925,8 @@ class FissionXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['fission'] / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class NuFissionXS(MultiGroupXS): @@ -948,6 +956,8 @@ class NuFissionXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class ScatterXS(MultiGroupXS): @@ -977,6 +987,8 @@ class ScatterXS(MultiGroupXS): OpenMC tally arithmetic""" self._xs_tally = self.tallies['scatter'] / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class NuScatterXS(MultiGroupXS): @@ -1006,6 +1018,8 @@ class NuScatterXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class ScatterMatrixXS(MultiGroupXS): @@ -1014,34 +1028,45 @@ class ScatterMatrixXS(MultiGroupXS): super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'scatter matrix' - def create_tallies(self): + def create_tallies(self, correct=False): """Construct the OpenMC tallies needed to compute this cross-section.""" - # Create a list of scores for each Tally to be created - scores = ['flux', 'scatter', 'scatter-P1'] - estimator = 'analog' - keys = scores - - # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) energyout = openmc.Filter('energyout', group_edges) - filters = [[energy], [energy, energyout], [energyout]] + + # Create a list of scores for each Tally to be created + if correct: + scores = ['flux', 'scatter', 'scatter-P1'] + filters = [[energy], [energy, energyout], [energyout]] + else: + scores = ['flux', 'scatter'] + filters = [[energy], [energy, energyout]] + + estimator = 'analog' + keys = scores # Initialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def load_from_statepoint(self, statepoint): - super(ScatterMatrixXS, self).load_from_statepoint(statepoint) - scatter_p1 = self.tallies['scatter-P1'] - self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) - - def compute_xs(self): + def compute_xs(self, correct=False): """Computes the multi-group scattering matrix using OpenMC tally arithmetic""" - self._xs_tally = self.tallies['scatter'] - self.tallies['scatter-P1'] - self._xs_tally /= self.tallies['flux'] + # FIXME: This should only subtract P1 from the diagonal!!! + if correct: + scatter_p1 = self.tallies['scatter-P1'] + scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) + energy_filter = openmc.Filter(type='energy') + energy_filter.bins = self.energy_groups.group_edges + scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) + rxn_tally = self.tallies['scatter'] - scatter_p1 + else: + rxn_tally = self.tallies['scatter'] + + self._xs_tally = rxn_tally / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) def get_xs(self, in_groups='all', out_groups='all', subdomains='all', value='mean'): @@ -1195,13 +1220,25 @@ class NuScatterMatrixXS(ScatterMatrixXS): # Intialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self): + def compute_xs(self, correct=False): """Computes the multi-group nu-scattering matrix using OpenMC tally arithmetic""" - self._xs_tally = self.tallies['nu-scatter'] - self.tallies['scatter-P1'] - self._xs_tally /= self.tallies['flux'] + # FIXME: This should only subtract P1 from the diagonal!!! + if correct: + scatter_p1 = self.tallies['scatter-P1'] + scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) + energy_filter = openmc.Filter(type='energy') + energy_filter.bins = self.energy_groups.group_edges + energy_filter.num_bins = self.num_groups + scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) + rxn_tally = self.tallies['nu-scatter'] - scatter_p1 + else: + rxn_tally = self.tallies['nu-scatter'] + self._xs_tally = rxn_tally / self.tallies['flux'] + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) class Chi(MultiGroupXS): @@ -1236,12 +1273,12 @@ class Chi(MultiGroupXS): # Construct energy group filter bins to sum across filter_bins = [] - for group in range(self.num_groups): + for group in range(1, self.num_groups+1): group_bounds = self.energy_groups.get_group_bounds(group) filter_bins.append((group_bounds,)) energy_bins = [filter_bins] - sum_nu_fission_in = nu_fission_in.summation(filters=['energyout'], + sum_nu_fission_in = nu_fission_in.summation(filters=['energy'], filter_bins=energy_bins) self._xs_tally = nu_fission_out / sum_nu_fission_in @@ -1256,5 +1293,7 @@ class Chi(MultiGroupXS): norm = self._xs_tally.summation(filters=[self.domain_type], filter_bins=filter_bins) self._xs_tally /= norm + self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) # FIXME: Does this need to reset NaNs to zero? \ No newline at end of file diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 5d385b548..0730c5c65 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -517,7 +517,6 @@ class StatePoint(object): new_shape = (nonzero(tally.num_filter_bins), nonzero(tally.num_nuclides), nonzero(tally.num_score_bins)) - sum = np.reshape(sum, new_shape) sum_sq = np.reshape(sum_sq, new_shape) @@ -663,8 +662,6 @@ class StatePoint(object): # Iterate over all tallies to find the appropriate one for tally_id, test_tally in self.tallies.items(): - print(test_tally) - # Determine if Tally has queried name if name and name != test_tally.name: continue @@ -675,7 +672,6 @@ class StatePoint(object): # Determine if Tally has queried estimator if estimator and not estimator == test_tally.estimator: - print('estimator') continue # Determine if Tally has the queried score(s) @@ -689,7 +685,6 @@ class StatePoint(object): break if not contains_scores: - print('scores') continue # Determine if Tally has the queried Filter(s) @@ -703,7 +698,6 @@ class StatePoint(object): break if not contains_filters: - print('filters') continue # Determine if Tally has the queried Nuclide(s) @@ -717,7 +711,6 @@ class StatePoint(object): break if not contains_nuclides: - print('nuclides') continue # If the current Tally met user's request, break loop and return it diff --git a/openmc/tallies.py b/openmc/tallies.py index 6165dc677..827d98b61 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -12,7 +12,7 @@ import numpy as np from openmc import Mesh, Filter, Trigger, Nuclide from openmc.cross import CrossScore, CrossNuclide, CrossFilter from openmc.summary import Summary -from openmc.checkvalue import check_type, check_value, check_greater_than +import openmc.checkvalue as cv from openmc.clean_xml import * @@ -146,36 +146,42 @@ class Tally(object): else: return existing - def __eq__(self, tally2): + def __eq__(self, other): + if not isinstance(other, Tally): + return False + # Check all filters - if len(self.filters) != len(tally2.filters): + if len(self.filters) != len(other.filters): return False for filter in self.filters: - if filter not in tally2.filters: + if filter not in other.filters: return False # Check all nuclides - if len(self.nuclides) != len(tally2.nuclides): + if len(self.nuclides) != len(other.nuclides): return False for nuclide in self.nuclides: - if nuclide not in tally2.nuclides: + if nuclide not in other.nuclides: return False # Check all scores - if len(self.scores) != len(tally2.scores): + if len(self.scores) != len(other.scores): return False for score in self.scores: - if score not in tally2.scores: + if score not in other.scores: return False - if self.estimator != tally2.estimator: + if self.estimator != other.estimator: return False return True + def __ne__(self, other): + return not self == other + def __hash__(self): hashable = [] @@ -229,7 +235,7 @@ class Tally(object): def num_filter_bins(self): num_bins = 1 - for filter in self._filters: + for filter in self.filters: num_bins *= filter.num_bins return num_bins @@ -289,7 +295,7 @@ class Tally(object): @estimator.setter def estimator(self, estimator): - check_value('estimator', estimator, ['analog', 'tracklength']) + cv.check_value('estimator', estimator, ['analog', 'tracklength']) self._estimator = estimator def add_trigger(self, trigger): @@ -316,13 +322,13 @@ class Tally(object): self._id = AUTO_TALLY_ID AUTO_TALLY_ID += 1 else: - check_type('tally ID', tally_id, Integral) - check_greater_than('tally ID', tally_id, 0) + cv.check_type('tally ID', tally_id, Integral) + cv.check_greater_than('tally ID', tally_id, 0) self._id = tally_id @name.setter def name(self, name): - check_type('tally name', name, basestring) + cv.check_type('tally name', name, basestring) self._name = name def add_filter(self, filter): @@ -381,28 +387,28 @@ class Tally(object): @num_realizations.setter def num_realizations(self, num_realizations): - check_type('number of realizations', num_realizations, Integral) - check_greater_than('number of realizations', num_realizations, 0, True) + cv.check_type('number of realizations', num_realizations, Integral) + cv.check_greater_than('number of realizations', num_realizations, 0, True) self._num_realizations = num_realizations @with_summary.setter def with_summary(self, with_summary): - check_type('with_summary', with_summary, bool) + cv.check_type('with_summary', with_summary, bool) self._with_summary = with_summary @with_batch_statistics.setter def with_batch_statistics(self, with_batch_statistics): - check_type('with_batch_statistics', with_batch_statistics, bool) + cv.check_type('with_batch_statistics', with_batch_statistics, bool) self._with_batch_statistics = with_batch_statistics @sum.setter def sum(self, sum): - check_type('sum', sum, Iterable) + cv.check_type('sum', sum, Iterable) self._sum = sum @sum_sq.setter def sum_sq(self, sum_sq): - check_type('sum_sq', sum_sq, Iterable) + cv.check_type('sum_sq', sum_sq, Iterable) self._sum_sq = sum_sq def remove_score(self, score): @@ -805,72 +811,17 @@ class Tally(object): return score_index - def get_values(self, scores=[], filters=[], filter_bins=[], - nuclides=[], value='mean'): - """Returns a tally score value given a list of filters to satisfy. - - This method constructs a 3D NumPy array for the requested Tally data - indexed by filter bin, nuclide bin, and score index. The method will - order the data in the array as specified in the parameter lists - - Parameters - ---------- - scores : list - A list of one or more score strings - (e.g., ['absorption', 'nu-fission']; default is []) - - filters : list - A list of filter type strings - (e.g., ['mesh', 'energy']; default is []) - - filter_bins : list of Iterables - A list of the filter bins corresponding to the filter_types - parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin - in the list is the integer ID for 'material', 'surface', 'cell', - 'cellborn', and 'universe' Filters. Each bin is an integer for the - cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of - floats for 'energy' and 'energyout' filters corresponding to the - energy boundaries of the bin of interest. The bin is a (x,y,z) - 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond of the - filter_types parameter. - - nuclides : list - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; 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 - - Returns - ------- - float or ndarray - A scalar or NumPy array of the Tally data indexed in the order - each filter, nuclide and score is listed in the parameters. - - Raises - ------ - ValueError - When this method is called before the Tally is populated with data - by the StatePoint.read_results() method. ValueError is also thrown - if the input parameters do not correspond to the Tally's attributes, - e.g., if the score(s) do not match those in the Tally. - + def get_filter_indices(self, filters=[], filter_bins=[]): """ - # Ensure that StatePoint.read_results() was called first - if (value == 'mean' and self.mean is None) or \ - (value == 'std_dev' and self.std_dev is None) or \ - (value == 'rel_err' and self.mean is None) or \ - (value == 'sum' and self.sum is None) or \ - (value == 'sum_sq' and self.sum_sq is None): - msg = 'The Tally ID="{0}" has no data to return. Call the ' \ - 'StatePoint.read_results() method before using ' \ - 'Tally.get_values(...)'.format(self.id) - raise ValueError(msg) + :param filters: + :param filter_bins: + :return: + """ + + cv.check_iterable_type('filters', filters, basestring) + cv.check_iterable_type('filter_bins', filter_bins, tuple) - ############################ FILTERS ######################### # Determine the score indices from any of the requested scores if filters: # Initialize empty list of indices for each bin in each Filter @@ -924,7 +875,17 @@ class Tally(object): else: filter_indices = np.arange(self.num_filter_bins) - ############################ NUCLIDES ######################## + return filter_indices + + def get_nuclide_indices(self, nuclides): + """ + + :param nuclides: + :return: + """ + + cv.check_iterable_type('nuclides', nuclides, basestring) + # Determine the score indices from any of the requested scores if nuclides: nuclide_indices = np.zeros(len(nuclides), dtype=np.int) @@ -935,7 +896,17 @@ class Tally(object): else: nuclide_indices = np.arange(self.num_nuclides) - ############################# SCORES ######################### + return nuclide_indices + + def get_score_indices(self, scores): + """ + + :param scores: + :return: + """ + + cv.check_iterable_type('scores', scores, basestring) + # Determine the score indices from any of the requested scores if scores: score_indices = np.zeros(len(scores), dtype=np.int) @@ -946,6 +917,78 @@ class Tally(object): else: score_indices = np.arange(self.num_scores) + return score_indices + + def get_values(self, scores=[], filters=[], filter_bins=[], + nuclides=[], value='mean'): + """Returns a tally score value given a list of filters to satisfy. + + This method constructs a 3D NumPy array for the requested Tally data + indexed by filter bin, nuclide bin, and score index. The method will + order the data in the array as specified in the parameter lists + + Parameters + ---------- + scores : list + A list of one or more score strings + (e.g., ['absorption', 'nu-fission']; default is []) + + filters : list + A list of filter type strings + (e.g., ['mesh', 'energy']; default is []) + + filter_bins : list of Iterables + A list of the filter bins corresponding to the filter_types + parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin + in the list is the integer ID for 'material', 'surface', 'cell', + 'cellborn', and 'universe' Filters. Each bin is an integer for the + cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of + floats for 'energy' and 'energyout' filters corresponding to the + energy boundaries of the bin of interest. The bin is a (x,y,z) + 3-tuple for 'mesh' filters corresponding to the mesh cell of + interest. The order of the bins in the list must correspond to the + filter_types parameter. + + nuclides : list + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; 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 + + Returns + ------- + float or ndarray + A scalar or NumPy array of the Tally data indexed in the order + each filter, nuclide and score is listed in the parameters. + + Raises + ------ + ValueError + When this method is called before the Tally is populated with data + by the StatePoint.read_results() method. ValueError is also thrown + if the input parameters do not correspond to the Tally's attributes, + e.g., if the score(s) do not match those in the Tally. + + """ + + # Ensure that StatePoint.read_results() was called first + if (value == 'mean' and self.mean is None) or \ + (value == 'std_dev' and self.std_dev is None) or \ + (value == 'rel_err' and self.mean is None) or \ + (value == 'sum' and self.sum is None) or \ + (value == 'sum_sq' and self.sum_sq is None): + msg = 'The Tally ID="{0}" has no data to return. Call the ' \ + 'StatePoint.read_results() method before using ' \ + 'Tally.get_values(...)'.format(self.id) + raise ValueError(msg) + + # Get filter, nuclide and score indices + filter_indices = self.get_filter_indices(filters, filter_bins) + nuclide_indices = self.get_nuclide_indices(nuclides) + score_indices = self.get_score_indices(scores) + # Construct outer product of all three index types with each other indices = np.ix_(filter_indices, nuclide_indices, score_indices) @@ -1129,7 +1172,7 @@ class Tally(object): """ # Ensure that StatePoint.read_results() was called first - if self._sum is None or self._sum_sq is None: + if self._sum is None or self._sum_sq is None and not self.derived: msg = 'The Tally ID="{0}" has no data to export. Call the ' \ 'StatePoint.read_results() routine before using ' \ 'Tally.export_results(...)'.format(self.id) @@ -1282,11 +1325,25 @@ class Tally(object): 'since it does not contain any results.'.format(other.id) raise ValueError(msg) - new_name = '({0} {1} {2})'.format(self.name, binary_op, other.name) - new_tally = Tally(name=new_name) + new_tally = Tally() new_tally.with_batch_statistics = True new_tally._derived = True + if self.name != '' and other.name != '': + new_name = '({0} {1} {2})'.format(self.name, binary_op, other.name) + new_tally.name = new_name + + # FIXME: Align filters + self_filters = set(self.filters) + other_filters = set(other.filters) + filter_intersect = self_filters.intersection(other_filters) + + for i, filter in enumerate(filter_intersect): + self_index = self.filters.index(filter) + other_filter = other.filters[self_index] + if other_filter != filter: + other = other.swap_filters(filter, other_filter) + data = self._align_tally_data(other) if binary_op == '+': @@ -1334,10 +1391,69 @@ class Tally(object): for self_filter in self.filters: new_tally.add_filter(self_filter) else: - all_filters = [self.filters, other.filters] - for self_filter, other_filter in itertools.product(*all_filters): - new_filter = CrossFilter(self_filter, other_filter, binary_op) - new_tally.add_filter(new_filter) + + match = 0 + for self_filter, other_filter in zip(self.filters, other.filters): + if self_filter == other_filter: + match += 1 + else: + break + + match_filters = self.filters[:match] + cross_filters = [self.filters[match:], other.filters[match:]] + + ''' + # FIXME: + self_filters = set(self.filters) + other_filters = set(other.filters) + diff1 = list(self_filters.difference(other_filters)) + diff2 = list(other_filters.difference(self_filters)) + symm_diff = list(other_filters.symmetric_difference(self_filters)) + ''' + + # FIXME: This must be the common longest sequence of tallies at the beginning + + for filter in match_filters: + new_tally.add_filter(filter) + + ''' + # + if len(self_filters) == 0: + for filter in self.filters: + new_tally.add_filter(filter) + for filter in self_filters: + new_tally.add_filter(filter) + # + elif len(diff2) == 0: + for filter in other.filters: + new_tally.add_filter(filter) + for filter in diff2: + new_tally.add_filter(filter) + ''' + + if len(self.filters) != match and len(other.filters) == match: + for filter in cross_filters[0]: + new_tally.add_filter(filter) + elif len(other.filters) == match and len(other.filters) != match: + for filter in cross_filters[1]: + new_tally.add_filter(filter) + else: + for self_filter, other_filter in itertools.product(*cross_filters): + new_filter = CrossFilter(self_filter, other_filter, binary_op) + new_tally.add_filter(new_filter) + + # +# else: +# all_filters = list(set([self.filters, other.filters] + ''' + if len(symm_diff) <= 1: + for filter in symm_diff: + new_tally.add_filter(filter) + else: + for self_filter, other_filter in itertools.product(*symm_diff): + new_filter = CrossFilter(self_filter, other_filter, binary_op) + new_tally.add_filter(new_filter) + ''' # Generate score "outer products" if self.scores == other.scores: @@ -1361,8 +1477,95 @@ class Tally(object): new_nuclide = CrossNuclide(self_nuclide, other_nuclide, binary_op) new_tally.add_nuclide(new_nuclide) + # Correct each Filter's stride + stride = new_tally.num_nuclides * new_tally.num_score_bins + for filter in reversed(new_tally.filters): + filter.stride = stride + stride *= filter.num_bins + return new_tally + def swap_filters(self, filter1, filter2): + """ + + :param filter1: + :param filter2: + :return: + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + cv.check_type('filter1', filter1, Filter) + cv.check_type('filter2', filter2, Filter) + + if filter1 == filter2: + msg = 'Unable to swap a filter with itself' + raise ValueError(msg) + elif filter1 not in self.filters: + msg = 'Unable to swap "{0}" filter1 in Tally ID="{1}" since it ' \ + 'does not contain such a filter'.format(filter1.type, self.id) + raise ValueError(msg) + elif filter2 not in self.filters: + msg = 'Unable to swap "{0}" filter2 in Tally ID="{1}" since it ' \ + 'does not contain such a filter'.format(filter2.type, self.id) + raise ValueError(msg) + + swap_tally = copy.deepcopy(self) + + # Swap the filters in the copied version of this Tally + filter1_index = swap_tally.filters.index(filter1) + filter2_index = swap_tally.filters.index(filter2) + swap_tally.filters[filter1_index] = filter2 + swap_tally.filters[filter2_index] = filter1 + + # Update the strides for each of the filters + stride = swap_tally.num_nuclides * swap_tally.num_score_bins + for filter in reversed(swap_tally.filters): + filter.stride = stride + stride *= filter.num_bins + + filters = [filter1.type, filter2.type] + filter1_bins = np.arange(filter.num_bins) + filter2_bins = np.arange(filter2.num_bins) + + if self.sum is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='sum') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally.sum[indices, :, :] = data + + if self.sum_sq is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='sum_sq') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally.sum_sq[indices, :, :] = data + + if self.sum is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='mean') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally._mean[indices, :, :] = data + + if self.sum is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='std_dev') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally._std_dev[indices, :, :] = data + + return swap_tally + def _align_tally_data(self, other): """Aligns data from two tallies for tally arithmetic. @@ -1396,10 +1599,61 @@ class Tally(object): if self.filters != other.filters: + # FIXME: Note that this makes the assumption that common filters + # are at the beginning of each Tally's list of filters + +# match = 0 +# for i, filter_pair in enumerate(zip(self.filters, other.filters)): +# self_filter, other_filter = filter_pair +# if self_filter == other_filter: +# match += 1 +# else: +# break + +# match_filters = self.filters[:match] +# cross_filters = [self.filters[match:], other.filters[match:]] +# cross_filters.extend(other.filters[match:]) + +# other_tile_factor = 1 +# self_repeat_factor = 1 + + # FIXME: If one or the other tally has not cross filters +# repeat_factor = 1 +# for self_filter, other_filter in itertools.product(*cross_filters): +# repeat_factor *= self_filter.num_bins * other_filter.num_bins + +# other_tile_factor = repeat_factor / other.num_filter_bins +# self_repeat_factor = repeat_factor / self.num_filter_bins + +# other_tile_factor = repeat_factor +# self_repeat_factor = repeat_factor + + # +# for filter in self.filters[match:]: +# other_tile_factor *= filter.num_bins + +# for filter in other.filters[match:]: +# self_repeat_factor *= filter.num_bins + + + # FIXME: + diff1 = list(set(self.filters).difference(set(other.filters))) + diff2 = list(set(other.filters).difference(set(self.filters))) + + # + other_tile_factor = 1 + self_repeat_factor = 1 + + # + for filter in diff1: + other_tile_factor *= filter.num_bins + for filter in diff2: + self_repeat_factor *= filter.num_bins + # Determine the number of paired combinations of filter bins # between the two tallies and repeat arrays along filter axes - self_repeat_factor = other.num_filter_bins - other_tile_factor = self.num_filter_bins +# self_repeat_factor = other.num_filter_bins +# other_tile_factor = self.num_filter_bins # Replicate the data self_mean = np.repeat(self_mean, self_repeat_factor, axis=0) @@ -1923,7 +2177,7 @@ class Tally(object): floats for 'energy' and 'energyout' filters corresponding to the energy boundaries of the bin of interest. The bin is a (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond of the + interest. The order of the bins in the list must correspond to the filter_types parameter. nuclides : list @@ -1945,21 +2199,29 @@ class Tally(object): """ # Ensure that StatePoint.read_results() was called first - if self.sum is None: + if not self.derived and self.sum is None: msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ 'since it does not contain any results.'.format(self.id) raise ValueError(msg) new_tally = copy.deepcopy(self) - new_sum = self.get_values(scores, filters, filter_bins, - nuclides, 'sum') - new_sum_sq = self.get_values(scores, filters, filter_bins, - nuclides, 'sum_sq') - new_tally.sum = new_sum - new_tally.sum_sq = new_sum_sq - new_tally._mean = None - new_tally._std_dev = None + if self.sum is not None: + new_sum = self.get_values(scores, filters, filter_bins, + nuclides, 'sum') + new_tally.sum = new_sum + if self.sum_sq is not None: + new_sum_sq = self.get_values(scores, filters, filter_bins, + nuclides, 'sum_sq') + new_tally.sum_sq = new_sum_sq + if self.mean is not None: + new_mean = self.get_values(scores, filters, filter_bins, + nuclides, 'mean') + new_tally._mean = new_mean + if self.std_dev is not None: + new_std_dev = self.get_values(scores, filters, filter_bins, + nuclides, 'std_dev') + new_tally._std_dev = new_std_dev # SCORES if scores: @@ -2047,7 +2309,7 @@ class Tally(object): floats for 'energy' and 'energyout' filters corresponding to the energy boundaries of the bin of interest. The bin is a (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond of the + interest. The order of the bins in the list must correspond to the filter_types parameter. nuclides : list @@ -2115,6 +2377,66 @@ class Tally(object): return tally_sum + def diagonalize_filter(self, new_filter): + """Combines filters, scores and nuclides with another tally. + + This is a helper method for the tally arithmetic methods. The filters, + scores and nuclides from both tallies are enumerated into all possible + combinations and expressed as CrossFilter, CrossScore and + CrossNuclide objects in the new derived tally. + + Parameters + ---------- + other : Tally + The tally on the right hand side of the outer product + binary_op : {'+', '-', '*', '/', '^'} + The binary operation in the outer product + + Returns + ------- + Tally + A new Tally outer that is the outer product with this one. + + """ + + cv.check_type('new_filter', new_filter, Filter) + + if new_filter in self.filters: + msg = 'Unable to diagonalize Tally ID="{0}" which already ' \ + 'contains a "{1}" filter'.format(self.id, new_filter.type) + raise ValueError(msg) + + new_tally = copy.deepcopy(self) + new_tally.add_filter(new_filter) + + num_filter_bins = new_tally.num_filter_bins + num_nuclides = new_tally.num_nuclides + num_score_bins = new_tally.num_score_bins + new_shape = (num_filter_bins, num_nuclides, num_score_bins) + + diag_indices = np.arange(0, new_tally.num_filter_bins, new_filter.num_bins+1) + + if self.sum is not None: + new_tally._sum = np.zeros(new_shape, dtype=np.float64) + new_tally._sum[diag_indices, :, :] = self.sum + if self.sum_sq is not None: + new_tally._sum_sq = np.zeros(new_shape, dtype=np.float64) + new_tally._sum_sq[diag_indices, :, :] = self.sum_sq + if self.mean is not None: + new_tally._mean = np.zeros(new_shape, dtype=np.float64) + new_tally._mean[diag_indices, :, :] = self.mean + if self.std_dev is not None: + new_tally._std_dev = np.zeros(new_shape, dtype=np.float64) + new_tally._std_dev[diag_indices, :, :] = self.std_dev + + # Correct each Filter's stride + stride = new_tally.num_nuclides * new_tally.num_score_bins + for filter in reversed(new_tally.filters): + filter.stride = stride + stride *= filter.num_bins + + return new_tally + class TalliesFile(object): """Tallies file used for an OpenMC simulation. Corresponds directly to the From 0e8eaecf2faa223aa32d1b768bd9d9c025127632 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 11 Sep 2015 16:41:11 -0400 Subject: [PATCH 011/130] Multigroup Chi class is now working and verfied for 2-groups --- openmc/filter.py | 5 +++-- openmc/mgxs/mgxs.py | 11 ++++++++--- openmc/tallies.py | 22 ++++++++++++++++------ 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index 52c927bed..435d08c44 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -321,8 +321,7 @@ class Filter(object): # Filter bins for distribcell are the "IDs" of each unique placement # of the Cell in the Geometry (integers starting at 0) elif self.type == 'distribcell': - val = np.where(self.bins == filter_bin)[0][0] - filter_index = val + filter_index = filter_bin # Use ID for all other Filters (e.g., material, cell, etc.) else: @@ -363,6 +362,8 @@ class Filter(object): elif self.type in ['energy', 'energyout']: bin = (self.bins[bin_index], self.bins[bin_index+1]) + elif self.type == 'distribcell': + bin = (self.bins[0],) else: bin = (self.bins[bin_index],) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 39eb79160..d92daa5d6 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1280,14 +1280,19 @@ class Chi(MultiGroupXS): sum_nu_fission_in = nu_fission_in.summation(filters=['energy'], filter_bins=energy_bins) + + # FIXME: CrossFilter for energy + energy messes up tally arithmetic + sum_nu_fission_in.remove_filter(sum_nu_fission_in.filters[-1]) + self._xs_tally = nu_fission_out / sum_nu_fission_in # Compute the total across all groups per subdomain if self.domain_type == 'distribcell': - subdomain_indices = self.get_subdomain_indices() - filter_bins = [(i,) for i in subdomain_indices] + domain_filter = self.tallies['nu-fission-in'].filters[0] + num_subdomains = domain_filter.num_bins + filter_bins = [((i,),) for i in range(num_subdomains)] else: - filter_bins = [(self.domain,)] + filter_bins = [((self.domain,),)] # Normalize chi to 1.0 norm = self._xs_tally.summation(filters=[self.domain_type], diff --git a/openmc/tallies.py b/openmc/tallies.py index 827d98b61..c0fb1615f 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -852,6 +852,9 @@ class Tally(object): for k in range(filter.num_bins): bins.append((filter.bins[k], filter.bins[k+1])) + elif filter.type == 'distribcell': + bins = np.arange(filter.num_bins) + # Create list of IDs for bins for all other Filter types else: bins = filter.bins @@ -1529,12 +1532,19 @@ class Tally(object): stride *= filter.num_bins filters = [filter1.type, filter2.type] - filter1_bins = np.arange(filter.num_bins) - filter2_bins = np.arange(filter2.num_bins) + if filter1.type == 'distribcell': + filter1_bins = np.arange(filter.num_bins) + else: + filter1_bins = [(filter1.get_bin(i)) for i in range(filter1.num_bins)] + + if filter1.type == 'distribcell': + filter2_bins = np.arange(filter2.num_bins) + else: + filter2_bins = [filter2.get_bin(i) for i in range(filter2.num_bins)] if self.sum is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + filter_bins = [(bin1,), (bin2,)] data = self.get_values(filters=filters, filter_bins=filter_bins, value='sum') indices = swap_tally.get_filter_indices(filters, filter_bins) @@ -1542,7 +1552,7 @@ class Tally(object): if self.sum_sq is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + filter_bins = [(bin1,), (bin2,)] data = self.get_values(filters=filters, filter_bins=filter_bins, value='sum_sq') indices = swap_tally.get_filter_indices(filters, filter_bins) @@ -1550,7 +1560,7 @@ class Tally(object): if self.sum is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + filter_bins = [(bin1,), (bin2,)] data = self.get_values(filters=filters, filter_bins=filter_bins, value='mean') indices = swap_tally.get_filter_indices(filters, filter_bins) @@ -1558,7 +1568,7 @@ class Tally(object): if self.sum is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(filter1.get_bin(bin1),), (filter2.get_bin(bin2),)] + filter_bins = [(bin1,), (bin2,)] data = self.get_values(filters=filters, filter_bins=filter_bins, value='std_dev') indices = swap_tally.get_filter_indices(filters, filter_bins) From 6d3d794c3e8e6544e98af6535e069b6c33e851bc Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 11 Sep 2015 16:52:36 -0400 Subject: [PATCH 012/130] Corrected energy normalization for mulit-group chi calculatoin --- openmc/mgxs/mgxs.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d92daa5d6..b37a5880c 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1286,17 +1286,13 @@ class Chi(MultiGroupXS): self._xs_tally = nu_fission_out / sum_nu_fission_in - # Compute the total across all groups per subdomain - if self.domain_type == 'distribcell': - domain_filter = self.tallies['nu-fission-in'].filters[0] - num_subdomains = domain_filter.num_bins - filter_bins = [((i,),) for i in range(num_subdomains)] - else: - filter_bins = [((self.domain,),)] - # Normalize chi to 1.0 - norm = self._xs_tally.summation(filters=[self.domain_type], - filter_bins=filter_bins) + norm = self._xs_tally.summation(filters=['energyout'], + filter_bins=energy_bins) + + # FIXME: CrossFilter for energy + energy messes up tally arithmetic + norm.remove_filter(sum_nu_fission_in.filters[-1]) + self._xs_tally /= norm self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) From 85a67ce17b79438f4f788148fce4e6679a471627 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 12 Sep 2015 02:04:21 -0400 Subject: [PATCH 013/130] Added Tally.tile_filter(...) routine for multi-group chi with distribcells --- openmc/mgxs/mgxs.py | 11 ++++++- openmc/tallies.py | 77 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index b37a5880c..c837bf085 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1059,6 +1059,7 @@ class ScatterMatrixXS(MultiGroupXS): scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges + energy_filter.num_bins = self.num_groups scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) rxn_tally = self.tallies['scatter'] - scatter_p1 else: @@ -1281,6 +1282,9 @@ class Chi(MultiGroupXS): sum_nu_fission_in = nu_fission_in.summation(filters=['energy'], filter_bins=energy_bins) + # FIXME: Need ability to override energy groups with group numbers + # FIXME: Reverse from fast to thermal with energy groups + # FIXME: CrossFilter for energy + energy messes up tally arithmetic sum_nu_fission_in.remove_filter(sum_nu_fission_in.filters[-1]) @@ -1291,7 +1295,12 @@ class Chi(MultiGroupXS): filter_bins=energy_bins) # FIXME: CrossFilter for energy + energy messes up tally arithmetic - norm.remove_filter(sum_nu_fission_in.filters[-1]) + norm.remove_filter(norm.filters[-1]) + + energy_filter = openmc.Filter(type='energyout') + energy_filter.bins = self.energy_groups.group_edges + energy_filter.num_bins = self.num_groups + norm = norm.tile_filter(energy_filter) self._xs_tally /= norm self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) diff --git a/openmc/tallies.py b/openmc/tallies.py index c0fb1615f..28a89af91 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2387,6 +2387,74 @@ class Tally(object): return tally_sum + def tile_filter(self, new_filter): + """Combines filters, scores and nuclides with another tally. + + This is a helper method for the tally arithmetic methods. The filters, + scores and nuclides from both tallies are enumerated into all possible + combinations and expressed as CrossFilter, CrossScore and + CrossNuclide objects in the new derived tally. + + Parameters + ---------- + other : Tally + The tally on the right hand side of the outer product + binary_op : {'+', '-', '*', '/', '^'} + The binary operation in the outer product + + Returns + ------- + Tally + A new Tally outer that is the outer product with this one. + + """ + + cv.check_type('new_filter', new_filter, Filter) + + if new_filter in self.filters: + msg = 'Unable to tile Tally ID="{0}" which already ' \ + 'contains a "{1}" filter'.format(self.id, new_filter.type) + raise ValueError(msg) + + new_tally = copy.deepcopy(self) + new_tally.add_filter(new_filter) + + num_filter_bins = new_tally.num_filter_bins + num_nuclides = new_tally.num_nuclides + num_score_bins = new_tally.num_score_bins + new_shape = (num_filter_bins, num_nuclides, num_score_bins) + + repeat_indices = np.arange(0, new_tally.num_bins, new_filter.num_bins) + repeat_factor = new_filter.num_bins + + if self.sum is not None: + new_tally._sum = np.zeros(new_shape, dtype=np.float64) + if self.sum_sq is not None: + new_tally._sum_sq = np.zeros(new_shape, dtype=np.float64) + if self.mean is not None: + new_tally._mean = np.zeros(new_shape, dtype=np.float64) + if self.std_dev is not None: + new_tally._std_dev = np.zeros(new_shape, dtype=np.float64) + + for i in range(repeat_factor): + if self.sum is not None: + new_tally._sum[repeat_indices+i, :, :] = self.sum + if self.sum_sq is not None: + new_tally._sum_sq[repeat_indices+i, :, :] = self.sum_sq + if self.mean is not None: + new_tally._mean[repeat_indices+i, :, :] = self.mean + if self.std_dev is not None: + new_tally._std_dev[repeat_indices+i, :, :] = self.std_dev + + # Correct each Filter's stride + stride = new_tally.num_nuclides * new_tally.num_score_bins + for filter in reversed(new_tally.filters): + filter.stride = stride + stride *= filter.num_bins + + return new_tally + + def diagonalize_filter(self, new_filter): """Combines filters, scores and nuclides with another tally. @@ -2424,7 +2492,14 @@ class Tally(object): num_score_bins = new_tally.num_score_bins new_shape = (num_filter_bins, num_nuclides, num_score_bins) - diag_indices = np.arange(0, new_tally.num_filter_bins, new_filter.num_bins+1) + indices = np.arange(0, new_filter.num_bins**2, new_filter.num_bins+1) + diag_indices = np.zeros(self.num_bins, dtype=np.int) + diag_factor = self.num_bins / new_filter.num_bins + + for i in range(diag_factor): + start = i * new_filter.num_bins + end = (i+1) * new_filter.num_bins + diag_indices[start:end] = indices + (i * new_filter.num_bins**2) if self.sum is not None: new_tally._sum = np.zeros(new_shape, dtype=np.float64) From 17317a7a31e71592b2c57f135e4d179d43662785 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 12 Sep 2015 02:31:25 -0400 Subject: [PATCH 014/130] Now using tally merging and slicing for openmc.mgxs --- openmc/mgxs/mgxs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index c837bf085..d77523261 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -657,8 +657,9 @@ class MultiGroupXS(object): # Find and store Tallies in StatePoint for tally_type, tally in self.tallies.items(): sp_tally = statepoint.get_tally(tally.scores, tally.filters, - tally.nuclides, - estimator=tally.estimator) + tally.nuclides, + estimator=tally.estimator) + sp_tally = sp_tally.get_slice(scores=tally.scores, nuclides=tally.nuclides) self.tallies[tally_type] = sp_tally def build_hdf5_store(self, filename='mgxs', directory='mgxs', From db6e07917fe5b42afa264081f1c9a9679fad924a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 12 Sep 2015 21:02:13 -0400 Subject: [PATCH 015/130] Cleaned up tally arithmetic cross-product classes __init__, __hash__, __eq__ routines --- openmc/constants.py | 2 +- openmc/cross.py | 127 +++++++++++++++++++++++++++++++------- openmc/filter.py | 147 +++++++++++++++++++++++++++++--------------- openmc/tallies.py | 2 +- 4 files changed, 203 insertions(+), 75 deletions(-) diff --git a/openmc/constants.py b/openmc/constants.py index a6b535e6d..80f56088b 100644 --- a/openmc/constants.py +++ b/openmc/constants.py @@ -120,4 +120,4 @@ SCORE_TYPES.update({MT: '(n,p' + str(MT-600) + ')' for MT in range(600,649)}) SCORE_TYPES.update({MT: '(n,d' + str(MT-650) + ')' for MT in range(650,699)}) SCORE_TYPES.update({MT: '(n,t' + str(MT-700) + ')' for MT in range(700,749)}) SCORE_TYPES.update({MT: '(n,3He' + str(MT-750) + ')' for MT in range(750,649)}) -SCORE_TYPES.update({MT: '(n,a' + str(MT-800) + ')' for MT in range(800,849)}) +SCORE_TYPES.update({MT: '(n,a' + str(MT-800) + ')' for MT in range(800,849)}) \ No newline at end of file diff --git a/openmc/cross.py b/openmc/cross.py index cb1e4930b..035ef43ab 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -1,4 +1,15 @@ +import sys + from openmc import Filter, Nuclide +from openmc.constants import FILTER_TYPES +import openmc.checkvalue as cv + + +if sys.version_info[0] >= 3: + basestring = str + +# Acceptable tally arithmetic binary operations +TALLY_ARITHMETIC_OPS = ['+', '-', '*', '/', '^'] class CrossScore(object): @@ -40,6 +51,33 @@ class CrossScore(object): if binary_op is not None: self.binary_op = binary_op + def __hash__(self): + return hash(str(self)) + + def __eq__(self, other): + return str(other) == str(self) + + def __ne__(self, other): + return not self == other + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._left_score = self.left_score + clone._right_score = self.right_score + clone._binary_op = self.binary_op + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + @property def left_score(self): return self._left_score @@ -54,19 +92,20 @@ class CrossScore(object): @left_score.setter def left_score(self, left_score): + cv.check_type('left_score', left_score, (basestring, CrossScore)) self._left_score = left_score @right_score.setter def right_score(self, right_score): + cv.check_type('right_score', right_score, (basestring, CrossScore)) self._right_score = right_score @binary_op.setter def binary_op(self, binary_op): + cv.check_type('binary_op', binary_op, (basestring, CrossScore)) + cv.check_value('binary_op', binary_op, TALLY_ARITHMETIC_OPS) self._binary_op = binary_op - def __eq__(self, other): - return str(other) == str(self) - def __repr__(self): string = '({0} {1} {2})'.format(self.left_score, self.binary_op, self.right_score) @@ -75,7 +114,7 @@ class CrossScore(object): class CrossNuclide(object): """A special-purpose nuclide used to encapsulate all combinations of two - tally's nuclides as a outer product for tally arithmetic. + tally's nuclides as an outer product for tally arithmetic. Parameters ---------- @@ -112,6 +151,33 @@ class CrossNuclide(object): if binary_op is not None: self.binary_op = binary_op + def __hash__(self): + return hash(str(self)) + + def __eq__(self, other): + return str(other) == str(self) + + def __ne__(self, other): + return not self == other + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, create a copy + if existing is None: + clone = type(self).__new__(type(self)) + clone._left_nuclide = self.left_nuclide + clone._right_nuclide = self.right_nuclide + clone._binary_op = self.binary_op + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + @property def left_nuclide(self): return self._left_nuclide @@ -126,14 +192,18 @@ class CrossNuclide(object): @left_nuclide.setter def left_nuclide(self, left_nuclide): + cv.check_type('left_nuclide', left_nuclide, (Nuclide, CrossNuclide)) self._left_nuclide = left_nuclide @right_nuclide.setter def right_nuclide(self, right_nuclide): + cv.check_type('right_nuclide', right_nuclide, (Nuclide, CrossNuclide)) self._right_nuclide = right_nuclide @binary_op.setter def binary_op(self, binary_op): + cv.check_type('binary_op', binary_op, basestring) + cv.check_value('binary_op', binary_op, TALLY_ARITHMETIC_OPS) self._binary_op = binary_op def __eq__(self, other): @@ -164,7 +234,7 @@ class CrossNuclide(object): class CrossFilter(object): """A special-purpose filter used to encapsulate all combinations of two - tally's filter bins as a outer product for tally arithmetic. + tally's filter bins as an outer product for tally arithmetic. Parameters ---------- @@ -195,25 +265,34 @@ class CrossFilter(object): self._type = '({0} {1} {2})'.format(left_type, binary_op, right_type) self._bins = {} - self._bins['left'] = left_filter.bins - self._bins['right'] = right_filter.bins - self._num_bins = left_filter.num_bins * right_filter.num_bins self._stride = None self._left_filter = None self._right_filter = None self._binary_op = None + self._num_bins = 0 if left_filter is not None: self.left_filter = left_filter + self.bins['left'] = left_filter.bins if right_filter is not None: self.right_filter = right_filter + self.bins['right'] = right_filter.bins if binary_op is not None: self.binary_op = binary_op + if self.left_filter is not None and self.right_filter is not None: + self._num_bins = left_filter.num_bins * right_filter.num_bins + def __hash__(self): return hash((self.left_filter, self.right_filter)) + def __eq__(self, other): + return str(other) == str(self) + + def __ne__(self, other): + return not self == other + def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -222,6 +301,7 @@ class CrossFilter(object): clone = type(self).__new__(type(self)) clone._left_filter = self.left_filter clone._right_filter = self.right_filter + clone._binary_op = self.binary_op clone._type = self.type clone._bins = self.bins clone._num_bins = self.num_bins @@ -262,34 +342,36 @@ class CrossFilter(object): @property def stride(self): return self._stride -# return self.left_filter.stride * self.right_filter.stride @type.setter def type(self, filter_type): + if filter_type not in FILTER_TYPES.values(): + msg = 'Unable to set Filter type to "{0}" since it is not one ' \ + 'of the supported types'.format(type) + raise ValueError(msg) + self._type = filter_type @left_filter.setter def left_filter(self, left_filter): + cv.check_type('left_filter', left_filter, (Filter, CrossFilter)) self._left_filter = left_filter @right_filter.setter def right_filter(self, right_filter): + cv.check_type('right_filter', right_filter, (Filter, CrossFilter)) self._right_filter = right_filter @binary_op.setter def binary_op(self, binary_op): + cv.check_type('binary_op', binary_op, basestring) + cv.check_value('binary_op', binary_op, TALLY_ARITHMETIC_OPS) self._binary_op = binary_op @stride.setter def stride(self, stride): self._stride = stride - def __eq__(self, other): - return str(other) == str(self) - - def __ne__(self, other): - return not self == other - def get_bin_index(self, filter_bin): """Returns the index in the CrossFilter for some bin. @@ -307,7 +389,7 @@ class CrossFilter(object): Returns ------- - filter_index : int + filter_index : Integral The index in the Tally data array for this filter bin. """ @@ -323,12 +405,12 @@ class CrossFilter(object): This method constructs a Pandas DataFrame object for the CrossFilter with columns annotated by filter bin information. This is a helper method for the Tally.get_pandas_dataframe(...) routine. This method - recursively builds and concatenates the Pandas DataFrames for left + recursively builds and concatenates Pandas DataFrames for the left and right filters and crossfilters. This capability has been tested for Pandas >=0.13.1. However, it is recommended to use v0.16 or newer versions of Pandas since this method - uses the Multi-index Pandas feature. + uses Pandas' Multi-index functionality. Parameters ---------- @@ -339,17 +421,17 @@ class CrossFilter(object): An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric information in the Summary object is embedded into a Multi-index - column with a geometric "path" to each distribcell intance. + column with a geometric "path" to each distribcell instance. NOTE: This option requires the OpenCG Python package. Returns ------- pandas.DataFrame A Pandas DataFrame with columns of strings that characterize the - crossfilter's bins. Each entry in the DataFrame will include the one + crossfilter's bins. Each entry in the DataFrame will include one or more binary operations used to construct the crossfilter's bins. The number of rows in the DataFrame is the same as the total number - of bins in the corresponding tally, with the filter bin + of bins in the corresponding tally, with the filter bins appropriately tiled to map to the corresponding tally bins. See also @@ -361,6 +443,7 @@ class CrossFilter(object): # If left and right filters are identical, do not combine bins if self.left_filter == self.right_filter: df = self.left_filter.get_pandas_dataframe(datasize, summary) + # If left and right filters are different, combine their bins else: left_df = self.left_filter.get_pandas_dataframe(datasize, summary) @@ -382,4 +465,4 @@ class CrossFilter(object): self.right_filter.bins) string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', filter_type) string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', filter_bins) - return string + return string \ No newline at end of file diff --git a/openmc/filter.py b/openmc/filter.py index 435d08c44..bcbe61eb8 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -1,6 +1,7 @@ from collections import Iterable import copy from numbers import Real, Integral +import sys import numpy as np @@ -10,9 +11,13 @@ from openmc.constants import * import openmc.checkvalue as cv +if sys.version_info[0] >= 3: + basestring = str + + class Filter(object): - """A filter used to constrain a tally to a specific criterion, e.g. only tally - events when the particle is in a certain cell and energy range. + """A filter used to constrain a tally to a specific criterion, e.g. only + tally events when the particle is in a certain cell and energy range. Parameters ---------- @@ -20,28 +25,42 @@ class Filter(object): The type of the tally filter. Acceptable values are "universe", "material", "cell", "cellborn", "surface", "mesh", "energy", "energyout", and "distribcell". - bins : int or Iterable of int or Iterable of float + bins : Integral or Iterable of Integral or Iterable of Real The bins for the filter. This takes on different meaning for different - filters. + filters. See the OpenMC online documentation for more details. Attributes ---------- type : str The type of the tally filter. - bins : int or Iterable of int or Iterable of float + bins : Integral or Iterable of Integral or Iterable of float The bins for the filter + mesh : Mesh or None + A Mesh object for 'mesh' type filters. + offset : Integral + A value used to index tally bins for 'distribcell' tallies. + stride : Integral + The number of filter, nuclide and score bins within each of this + filter's bins. """ # Initialize Filter class attributes def __init__(self, type=None, bins=None): - self.type = type + + self._type = None self._num_bins = 0 - self.bins = bins + self._bins = None + self._bins = None self._mesh = None self._offset = -1 self._stride = None + if type is not None: + self.type = type + if bins is not None: + self.bins = bins + def __eq__(self, other): if not isinstance(other, Filter): return False @@ -58,7 +77,7 @@ class Filter(object): return not self == other def __hash__(self): - return hash((self._type, tuple(self._bins))) + return hash((self.type, tuple(self.bins))) def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -107,9 +126,7 @@ class Filter(object): @type.setter def type(self, type): - if type is None: - self._type = type - elif type not in FILTER_TYPES.values(): + if type not in FILTER_TYPES.values(): msg = 'Unable to set Filter type to "{0}" since it is not one ' \ 'of the supported types'.format(type) raise ValueError(msg) @@ -118,10 +135,7 @@ class Filter(object): @bins.setter def bins(self, bins): - if bins is None: - self.num_bins = 0 - return - elif self._type is None: + if self.type is None: msg = 'Unable to set bins for Filter to "{0}" since ' \ 'the Filter type has not yet been set'.format(bins) raise ValueError(msg) @@ -140,7 +154,7 @@ class Filter(object): for edge in bins: cv.check_greater_than('filter bin', edge, 0, equality=True) - elif self._type in ['energy', 'energyout']: + elif self.type in ['energy', 'energyout']: for edge in bins: if not isinstance(edge, Real): msg = 'Unable to add bin edge "{0}" to a "{1}" Filter ' \ @@ -161,7 +175,7 @@ class Filter(object): raise ValueError(msg) # mesh filters - elif self._type == 'mesh': + elif self.type == 'mesh': if not len(bins) == 1: msg = 'Unable to add bins "{0}" to a mesh Filter since ' \ 'only a single mesh can be used per tally'.format(bins) @@ -178,7 +192,6 @@ class Filter(object): # If all error checks passed, add bin edges self._bins = np.array(bins) - # FIXME @num_bins.setter def num_bins(self, num_bins): cv.check_type('filter num_bins', num_bins, Integral) @@ -280,20 +293,24 @@ class Filter(object): Parameters ---------- - filter_bin : int or tuple + filter_bin : Integral or tuple The bin is the integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. The bin is an integer for the cell instance ID for 'distribcell' Filters. The bin is a 2-tuple of floats for 'energy' and 'energyout' filters corresponding to the - energy boundaries of the bin of interest. The bin is a (x,y,z) - 3-tuple for 'mesh' filters corresponding to the mesh cell of + energy boundaries of the bin of interest. The bin is an (x,y,z) + 3-tuple for 'mesh' filters corresponding to the mesh cell interest. Returns ------- - filter_index : int + filter_index : Integral The index in the Tally data array for this filter bin. + See also + -------- + Filter.get_bin() + """ try: @@ -318,7 +335,7 @@ class Filter(object): val = np.where(self.bins == filter_bin[0])[0][0] filter_index = val - # Filter bins for distribcell are the "IDs" of each unique placement + # Filter bins for distribcells are "IDs" of each unique placement # of the Cell in the Geometry (integers starting at 0) elif self.type == 'distribcell': filter_index = filter_bin @@ -330,16 +347,42 @@ class Filter(object): except ValueError: msg = 'Unable to get the bin index for Filter since "{0}" ' \ - 'is not one of the bins'.format(filter_bin) + 'is not one of the bins'.format(filter_bin) raise ValueError(msg) return filter_index def get_bin(self, bin_index): - """ + """Returns the filter bin for some filter bin index. + + Parameters + ---------- + bin_index : Integral + The zero-based index into the filter's array of bins. The bin + index for 'material', 'surface', 'cell', 'cellborn', and 'universe' + filters corresponds to the ID in the filter's list of bins. For + 'distribcell' tallies the bin_index necessarily can only be zero + since only one cell can be tracked per tally. The bin index for + 'energy' and 'energyout' filters corresponds to the energy range of + interest in the filter bins of energies. The bin index for 'mesh' + filters is the index into the flattened array of (x,y) or (x,y,z) + mesh cell bins. + + Returns + ------- + bin : 1-, 2-, or 3-tuple of Real + The bin in the Tally data array. The bin for 'material', surface', + 'cell', 'cellborn', 'universe' and 'distribcell' filters is a + 1-tuple of the ID corresponding to the appropriate filter bin. + The bin for 'energy' and 'energyout' filters is a 2-tuple of the + lower and upper energies bounding the energy interval for the filter + bin. The bin for 'mesh' tallies is a 2-tuple or 3-tuple of the x,y + or x,y,z mesh cell indices corresponding to the bin in a 2D/3D mesh. + + See also + -------- + Filter.get_bin_index() - :param bin_index: - :return: """ cv.check_type('bin_index', bin_index, Integral) @@ -353,33 +396,32 @@ class Filter(object): x = bin_index / (ny * nz) y = (bin_index - (x * ny * nz)) / nz z = bin_index - (x * ny * nz) - (y * nz) - bin = (x, y, z) + filter_bin = (x, y, z) else: nx, ny = self.mesh.dimension x = bin_index / ny y = bin_index - (x * ny) - bin = (x, y) + filter_bin = (x, y) elif self.type in ['energy', 'energyout']: - bin = (self.bins[bin_index], self.bins[bin_index+1]) + filter_bin = (self.bins[bin_index], self.bins[bin_index+1]) elif self.type == 'distribcell': - bin = (self.bins[0],) + filter_bin = (self.bins[0],) else: - bin = (self.bins[bin_index],) + filter_bin = (self.bins[bin_index],) - return bin + return filter_bin def get_pandas_dataframe(self, data_size, summary=None): """Builds a Pandas DataFrame for the Filter's bins. - This method constructs a Pandas DataFrame object for the Filter with + This method constructs a Pandas DataFrame object for the filter with columns annotated by filter bin information. This is a helper method for the Tally.get_pandas_dataframe(...) routine. This capability has been tested for Pandas >=0.13.1. However, it is recommended to use v0.16 or newer versions of Pandas since this method - uses the Multi-index Pandas feature. - + uses Pandas' Multi-index functionality. Parameters ---------- @@ -390,7 +432,7 @@ class Filter(object): An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric information in the Summary object is embedded into a Multi-index - column with a geometric "path" to each distribcell intance. + column with a geometric "path" to each distribcell instance. NOTE: This option requires the OpenCG Python package. Returns @@ -405,23 +447,23 @@ class Filter(object): filters, the DataFrame includes a single column with the cell, surface, material or universe ID corresponding to each filter bin. - For 'mesh' filters, the DataFrame includes three columns for the - x,y,z mesh cell indices corresponding to each filter bin. + For 'distribcell' filters, the DataFrame either includes: + 1) a single column with the cell instance IDs (without summary info) + 2) separate columns for the cell IDs, universe IDs, and lattice IDs + and x,y,z cell indices corresponding to each (with summary info). For 'energy' and 'energyout' filters, the DataFrame include a single column with each element comprising a string with the lower, upper energy bounds for each filter bin. - For 'distribcell' filters, the DataFrame either includes: - 1) a single column with the cell instance IDs (without summary info) - 2) separate columns for the cell IDs, universe IDs, and lattice IDs - and x,y,z cell indices corresponding to each (with summary info) + For 'mesh' filters, the DataFrame includes three columns for the + x,y,z mesh cell indices corresponding to each filter bin. Raises ------ ImportError - When Pandas cannot is not installed, or summary info is requested - but OpenCG is not installed. + When Pandas is not installed, or summary info is requested but + OpenCG is not installed. See also -------- @@ -429,13 +471,14 @@ class Filter(object): """ - # Attempt to import the pandas package + # Attempt to import Pandas try: import pandas as pd except ImportError: msg = 'The pandas Python package must be installed on your system' raise ImportError(msg) + # Initialize Pandas DataFrame df = pd.DataFrame() # mesh filters @@ -614,12 +657,14 @@ class Filter(object): tile_factor = data_size / len(filter_bins) filter_bins = np.tile(filter_bins, tile_factor) filter_bins = filter_bins - if level_df is None: - df = pd.DataFrame({self.type :filter_bins}) - else: + df = pd.DataFrame({self.type : filter_bins}) + + # If OpenCG level info DataFrame was created, concatenate + # with DataFrame of distribcell instance IDs + if level_df is not None: level_df = level_df.dropna(axis=1, how='all') level_df = level_df.astype(np.int) - df = pd.concat([level_df, pd.DataFrame({self.type :filter_bins})], axis=1) + df = pd.concat([level_df, df], axis=1) # energy, energyout filters elif 'energy' in self.type: @@ -645,7 +690,7 @@ class Filter(object): tile_factor = data_size / len(filter_bins) filter_bins = np.tile(filter_bins, tile_factor) filter_bins = filter_bins - df = pd.concat([df, pd.DataFrame({self.type :filter_bins})]) + df = pd.concat([df, pd.DataFrame({self.type : filter_bins})]) return df diff --git a/openmc/tallies.py b/openmc/tallies.py index 28a89af91..9b3056818 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -78,8 +78,8 @@ class Tally(object): mean : ndarray An array containing the sample mean for each bin std_dev : ndarray - An array containing the sample standard deviation for each bin + An array containing the sample standard deviation for each bin """ def __init__(self, tally_id=None, name=''): From d41f0a92e3adfcc10500221ed657f22abd40aeee Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 12 Sep 2015 21:05:10 -0400 Subject: [PATCH 016/130] Fixed bug in bins property decorator for CrossFilter --- openmc/cross.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openmc/cross.py b/openmc/cross.py index 035ef43ab..fa1ce6e63 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -274,10 +274,10 @@ class CrossFilter(object): if left_filter is not None: self.left_filter = left_filter - self.bins['left'] = left_filter.bins + self._bins['left'] = left_filter.bins if right_filter is not None: self.right_filter = right_filter - self.bins['right'] = right_filter.bins + self._bins['right'] = right_filter.bins if binary_op is not None: self.binary_op = binary_op @@ -333,7 +333,7 @@ class CrossFilter(object): @property def bins(self): - return (self._bins['left'], self._bins['right']) + return self._bins['left'], self._bins['right'] @property def num_bins(self): From a886a16b04b6374d519f26750493d6b0b59a147d Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 12 Sep 2015 21:36:19 -0400 Subject: [PATCH 017/130] Improved comments for Python API openmc.mgxs.EnergyGroups class --- openmc/constants.py | 2 +- openmc/mesh.py | 1 + openmc/mgxs/groups.py | 37 +++++++++++++++++++++++++++---------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/openmc/constants.py b/openmc/constants.py index 80f56088b..a6b535e6d 100644 --- a/openmc/constants.py +++ b/openmc/constants.py @@ -120,4 +120,4 @@ SCORE_TYPES.update({MT: '(n,p' + str(MT-600) + ')' for MT in range(600,649)}) SCORE_TYPES.update({MT: '(n,d' + str(MT-650) + ')' for MT in range(650,699)}) SCORE_TYPES.update({MT: '(n,t' + str(MT-700) + ')' for MT in range(700,749)}) SCORE_TYPES.update({MT: '(n,3He' + str(MT-750) + ')' for MT in range(750,649)}) -SCORE_TYPES.update({MT: '(n,a' + str(MT-800) + ')' for MT in range(800,849)}) \ No newline at end of file +SCORE_TYPES.update({MT: '(n,a' + str(MT-800) + ')' for MT in range(800,849)}) diff --git a/openmc/mesh.py b/openmc/mesh.py index ddf3529c2..961b1519f 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -8,6 +8,7 @@ import numpy as np import openmc.checkvalue as cv + if sys.version_info[0] >= 3: basestring = str diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index be1ffd162..a989d27e9 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -17,7 +17,7 @@ class EnergyGroups(object): Parameters ---------- - group_edges : NumPy array + group_edges : ndarray The energy group boundaries [MeV] num_groups : Integral The number of energy groups @@ -31,17 +31,23 @@ class EnergyGroups(object): """ - def __init__(self): + def __init__(self, group_edges=None, num_groups=None): self._group_edges = None self._num_groups = None + if group_edges is not None: + self.group_edges = group_edges + if num_groups is not None: + self.num_groups = num_groups + def __deepcopy__(self, memo): existing = memo.get(id(self)) # If this is the first time we have tried to copy object, create copy if existing is None: clone = type(self).__new__(type(self)) - clone.group_edges = copy.deepcopy(self.group_edges, memo) + clone._group_edges = copy.deepcopy(self.group_edges, memo) + clone._num_groups = self.num_groups memo[id(self)] = clone @@ -71,6 +77,14 @@ class EnergyGroups(object): return False elif self.group_edges != other.group_edges: return False + else: + return True + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return hash(tuple(self.group_edges)) def generate_bin_edges(self, start, stop, num_groups, spacing='linear'): """Generate equally or logarithmically-spaced energy group boundaries. @@ -126,7 +140,7 @@ class EnergyGroups(object): """ if self.group_edges is None: - msg = 'Unable to get energy group for energy "{0}" eV since ' \ + msg = 'Unable to get energy group for energy "{0}" MeV since ' \ 'the group edges have not yet been set'.format(energy) raise ValueError(msg) @@ -174,7 +188,7 @@ class EnergyGroups(object): Returns ------- - NumPy.ndarray + ndarray The NumPy array indices for each energy group of interest Raises @@ -193,11 +207,11 @@ class EnergyGroups(object): if groups == 'all': indices = np.arange(self.num_groups) else: - indices = np.zeros(len(groups), dtype=np.int64) + indices = np.zeros(len(groups), dtype=np.int) for i, group in enumerate(groups): cv.check_greater_than('group', group, 0) - cv.check_less_than('group', group, self.num_groups, True) + cv.check_less_than('group', group, self.num_groups, equality=True) indices[i] = group - 1 return indices @@ -211,11 +225,13 @@ class EnergyGroups(object): Parameters ---------- - coarse_groups : list + coarse_groups : Iterable of 2-tuple The energy groups of interest - a list of 2-tuples, each directly corresponding to one of the new coarse groups. The values in the 2-tuples are upper/lower energy groups used to construct a new - coarse group. + coarse group. For example, if [(1,2), (2,4)] was used as the coarse + groups, fine groups 1 and 2 would be merged into coarse group 1 + while fine groups 3 and 4 would be merged into coarse group 2. Returns ------- @@ -230,7 +246,7 @@ class EnergyGroups(object): cv.check_type('group edges', coarse_groups, Iterable) for group in coarse_groups: - cv.check_value('group edges', group, Iterable) + cv.check_type('group edges', group, Iterable) cv.check_length('group edges', group, 2) cv.check_greater_than('lower group', group[0], 1, True) cv.check_less_than('lower group', group[0], self.num_groups, True) @@ -257,4 +273,5 @@ class EnergyGroups(object): # Create a new condensed EnergyGroups object condensed_groups = EnergyGroups() condensed_groups.group_edges = group_edges + return condensed_groups \ No newline at end of file From 665b8226e86d88a7b6e485b596f144ece0bfbe7b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 12 Sep 2015 22:16:41 -0400 Subject: [PATCH 018/130] Improvements to docstrings for openmc.mgxs.MultiGroupXS --- openmc/mgxs/mgxs.py | 399 ++++++++++++++++++++++---------------------- 1 file changed, 203 insertions(+), 196 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d77523261..e0ffb6431 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -17,31 +17,18 @@ if sys.version_info[0] >= 3: basestring = str -# Supported cross-section types -XS_TYPES = ('total', - 'transport', - 'absorption', - 'capture', - 'scatter', - 'nu-scatter', - 'scatter matrix', - 'nu-scatter matrix', - 'fission', - 'nu-fission', - 'chi') - # Supported domain types -DOMAIN_TYPES = ('cell', +DOMAIN_TYPES = ['cell', 'distribcell', 'universe', 'material', - 'mesh') + 'mesh'] # Supported domain objects -DOMAINS = (openmc.Cell, +DOMAINS = [openmc.Cell, openmc.Universe, openmc.Material, - openmc.Mesh) + openmc.Mesh] # LaTeX Greek symbols for each cross-section type GREEK = dict() @@ -59,7 +46,7 @@ GREEK['chi'] = '$\\chi$' class MultiGroupXS(object): - """A multi-group cross-section for some energy groups structure within + """A multi-group cross-section for some energy group structure within some spatial domain. This class can be used for both OpenMC input generation and tally data @@ -68,15 +55,15 @@ class MultiGroupXS(object): Parameters ---------- - name : str, optional - Name of the multi-group cross-section. If not specified, the name is - the empty string. domain : Material or Cell or Universe or Mesh The domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe' or 'mesh'} The domain type for spatial homogenization energy_groups : EnergyGroups The energy group structure for energy condensation + name : str, optional + Name of the multi-group cross-section. Used as a label to identify + tallies in OpenMC tallies.xml file. Attributes ---------- @@ -93,16 +80,16 @@ class MultiGroupXS(object): num_groups : Integral Number of energy groups tallies : dict - Tallies needed to compute the multi-group cross-section - xs : Tally + OpenMC tallies needed to compute the multi-group cross-section + xs_tally : Tally Derived tally for the multi-group cross-section. This attribute is None unless the multi-group cross-section has been computed. - subdomain_offsets : dict - Integral subdomain IDs (keys) mapped to integral tally data array - offsets (values). When the domain_type is 'distribcell', each subdomain - ID corresponds to an instance of the cell domain. For all other domain - types, there is only one subdomain for the domain and this dictionary - will trivially map zero to zero. + subdomain_indices : dict + Integer subdomain IDs (keys) mapped to integer tally data array + indices (values) for 'distribcell' domain types. Each subdomain ID + corresponds to an instance of the cell domain. For all other domain + types, the domain has only one subdomain and this dictionary will + trivially map zero to zero. offset : Integral The filter offset for the domain filter @@ -124,7 +111,7 @@ class MultiGroupXS(object): self._xs_tally = None # A dictionary used to compute indices into the xs array - # Keys - Domain ID (ie, Material ID, Region ID for districell, etc) + # Keys - Domain ID (ie, maaterial ID, distribcell instance ID, etc) # Values - Offset/stride into xs array # NOTE: This is primarily used for distribcell domain types self._subdomain_indices = dict() @@ -150,7 +137,7 @@ class MultiGroupXS(object): clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._num_groups = self.num_groups - clone._xs_tally = copy.deepcopy(self._xs_tally, memo) + clone._xs_tally = copy.deepcopy(self.xs_tally, memo) clone._subdomain_indices = \ copy.deepcopy(self.subdomain_indices, memo) clone._offset = copy.deepcopy(self.offset, memo) @@ -210,14 +197,14 @@ class MultiGroupXS(object): @domain.setter def domain(self, domain): - cv.check_type('domain', domain, DOMAINS) + cv.check_type('domain', domain, tuple(DOMAINS)) self._domain = domain if self._domain_type in ['material', 'cell', 'universe', 'mesh']: self._subdomain_indices[domain.id] = 0 @domain_type.setter def domain_type(self, domain_type): - cv.check_value('domain type', domain_type, DOMAIN_TYPES) + cv.check_value('domain type', domain_type, tuple(DOMAIN_TYPES)) self._domain_type = domain_type @energy_groups.setter @@ -228,16 +215,17 @@ class MultiGroupXS(object): def _find_domain_offset(self): """Finds and stores the offset of the domain tally filter""" + tally = self.tallies.values()[0] - filter = tally.find_filter(self.domain_type, [self.domain.id]) - self._offset = filter.offset + domain_filter = tally.find_filter(self.domain_type, [self.domain.id]) + self._offset = domain_filter.offset def set_subdomain_index(self, subdomain_id, index): """Set the filter bin index for a subdomain of the domain. - This is primarily useful when the domain type is 'distribcell', in - which case one may wish to map each subdomain (a cell instance) to its - filter bin in the derived multi-group cross-section tally data array. + This is useful when the domain type is 'distribcell', in which case one + may wish to map each subdomain (a cell instance) to its filter bin in + the derived multi-group cross-section tally data array. Parameters ---------- @@ -246,17 +234,120 @@ class MultiGroupXS(object): index : Integral The filter bin index for the subdomain + See also + -------- + MultiGroupXS.get_subdomains(), MultiGroupXS.get_subdomain_indices() + """ cv.check_type('subdomain id', subdomain_id, Integral) - cv.check_type('subdomain offset', index, Integral) - cv.check_greater_than('subdomain id', subdomain_id, 0, True) - cv.check_greater_than('subdomain offset', subdomain_id, 0, True) + cv.check_type('subdomain index', index, Integral) + cv.check_greater_than('subdomain id', subdomain_id, 0, equality=True) + cv.check_greater_than('subdomain index', index, 0, equality=True) self._subdomain_indices[subdomain_id] = index + def get_subdomain_indices(self, subdomains='all'): + """Get the indices for one or more subdomains. + + This method can be used to extract the indices into the multi-group + cross-section tally data array for a subdomain. This is useful when the + domain type is 'distribcell', in which case one may wish to map each + subdomain (a cell instance) to its filter bin index in the derived + multi-group cross-section tally data array. + + Parameters + ---------- + subdomains : Iterable of Integral or 'all' + Subdomain IDs (distribcell instance IDs) of interest + + Returns + ---------- + indices : ndarray + The subdomain indices indexed in the order of the subdomains + + Raises + ------ + ValueError + When one of the subdomains is not a valid subdomain ID. + + See also + -------- + MultiGroupXS.get_subdomains(), MultiGroupXS.set_subdomain_index() + + """ + + if subdomains != 'all': + cv.check_type('subdomains', subdomains, Iterable, Integral) + + if subdomains == 'all': + num_subdomains = len(self.subdomain_indices) + indices = np.arange(num_subdomains) + else: + indices = np.zeros(len(subdomains), dtype=np.int64) + + for i, subdomain in enumerate(subdomains): + if subdomain in self.subdomain_indices: + indices[i] = self.subdomain_indices[subdomain] + else: + msg = 'Unable to get index for subdomain "{0}" since it ' \ + 'is not a valid subdomain'.format(subdomain) + raise ValueError(msg) + + return indices + + def get_subdomains(self, indices='all'): + """Get the subdomain IDs for one or more indices. + + This method can be used to extract the subdomains for the multi-group + cross-section from their indices in the tally data array. This is useful + when the domain type is 'distribcell', in which case one may wish to map + each subdomain (a cell instance) to its filter bin index in the derived + multi-group cross-section tally data array. + + Parameters + ---------- + indices : Iterable of Integral or 'all' + Subdomain indices of interest + + Returns + ---------- + subdomains : ndarray + Array of subdomain IDs indexed in the order of the indices + + Raises + ------ + ValueError + When one of the indices is not a valid subdomain index. + + See also + -------- + MultiGroupXS.get_subdomain_indices(), MultiGroupXS.set_subdomain_index() + + """ + + if indices != 'all': + cv.check_type('offsets', indices, Iterable, Integral) + + if indices == 'all': + indices = self.get_subdomain_indices() + + subdomains = np.zeros(len(indices), dtype=np.int64) + keys = self.subdomain_indices.keys() + values = self.subdomain_indices.values() + + for i, index in enumerate(indices): + if index in values: + subdomains[i] = keys[values.index(index)] + else: + msg = 'Unable to get subdomain for index "{0}" since it ' \ + 'is not a valid index'.format(index) + raise ValueError(msg) + + return subdomains + @abc.abstractmethod def create_tallies(self, scores, all_filters, keys, estimator): - """Instantiates tallies needed to compute the multi-group cross-section + """Instantiates tallies needed to compute the multi-group cross-section. This is a helper method for MultiGroupXS subclasses to create tallies for input file generation. The tallies are stored in the tallies dict. @@ -293,94 +384,37 @@ class MultiGroupXS(object): for filter in filters: self.tallies[key].add_filter(filter) - def get_subdomain_indices(self, subdomains='all'): - """Get the indices for one or more subdomains. + def load_from_statepoint(self, statepoint): + """Extracts tallies in an OpenMC StatePoint with the data needed to + compute multi-group cross-sections. - This method can be used to extract the indices into the multi-group - cross-section tally data array for a subdomain (i.e., cell instance). - - See also : get_subdomains + This method is needed to compute cross-section data from tallies + in an OpenMC StatePoint object. Parameters ---------- - subdomains : Iterable of Integral or 'all' - Subdomain IDs of interest - - Returns - ---------- - indices : ndarray - The subdomain indices indexed in the order of the subdomains - - Raises - ------ - ValueError - When one of the subdomains is not a valid subdomain ID. + statepoint : openmc.StatePoint + An OpenMC StatePoint object with tally data """ - if subdomains != 'all': - cv.check_type('subdomains', subdomains, Iterable, Integral) + cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) - if subdomains == 'all': - num_subdomains = len(self.subdomain_indices) - indices = np.arange(num_subdomains) - else: - indices = np.zeros(len(subdomains), dtype=np.int64) + # Ensure that tally metadata has been loaded from the statepoint file + statepoint.read_results() - for i, subdomain in enumerate(subdomains): - if subdomain in self.subdomain_indices: - indices[i] = self.subdomain_indices[subdomain] - else: - msg = 'Unable to get index for subdomain "{0}" since it ' \ - 'is not a valid subdomain'.format(subdomain) - raise ValueError(msg) + # Create Tallies to search for in StatePoint + if self.tallies is None: + self.create_tallies() - return indices - - def get_subdomains(self, indices='all'): - """Get the subdomain IDs for one or more indices. - - This method can be used to extract the subdomains for the multi-group - cross-section from their indices in the tally data array. - - See also : get_subdomain_indices - - Parameters - ---------- - indices : Iterable of Integral or 'all' - Subdomain indices of interest - - Returns - ---------- - subdomains : ndarray - Array of subdomain IDs indexed in the order of the indices - - Raises - ------ - ValueError - When one of the indices is not a valid subdomain index. - - """ - - if indices != 'all': - cv.check_type('offsets', indices, Iterable, Integral) - - if indices == 'all': - indices = self.get_subdomain_indices() - - subdomains = np.zeros(len(indices), dtype=np.int64) - keys = self.subdomain_indices.keys() - values = self.subdomain_indices.values() - - for i, index in enumerate(indices): - if index in values: - subdomains[i] = keys[values.index(index)] - else: - msg = 'Unable to get subdomain for index "{0}" since it ' \ - 'is not a valid index'.format(index) - raise ValueError(msg) - - return subdomains + # Find, slice and store Tallies from StatePoint + # The tally slicing is needed if tally merging was used + for tally_type, tally in self.tallies.items(): + sp_tally = statepoint.get_tally(tally.scores, tally.filters, + tally.nuclides, + estimator=tally.estimator) + sp_tally = sp_tally.get_slice(scores=tally.scores, nuclides=tally.nuclides) + self.tallies[tally_type] = sp_tally def get_xs(self, groups='all', subdomains='all', value='mean'): """Returns an array of multi-group cross-sections. @@ -412,7 +446,7 @@ class MultiGroupXS(object): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) @@ -433,15 +467,23 @@ class MultiGroupXS(object): filter_bins.append(self.energy_groups.get_group_bounds(group)) # Query the multi-group cross-section tally for the data - xs = self._xs_tally.get_values(filters=filters, + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) return xs def get_condensed_xs(self, coarse_groups): - """ + """Construct an energy-condensed version of this cross-section. + + Parameters + ---------- + coarse_groups : openmc.mgxs.EnergyGroups + The coarse energy group structure of interest + + Returns + ------- + MultiGroupXS + A new MultiGroupXS condensed to the group structure of interest - :param coarse_groups: - :return: """ raise NotImplementedError('Energy condensation is not yet implemented') @@ -449,6 +491,8 @@ class MultiGroupXS(object): def get_subdomain_avg_xs(self, subdomains='all'): """Construct a subdomain-averaged version of this cross-section. + This is primarily useful for averaging across distribcell instances. + Parameters ---------- subdomains : Iterable of Integral or 'all' @@ -467,7 +511,7 @@ class MultiGroupXS(object): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) @@ -497,6 +541,7 @@ class MultiGroupXS(object): # Compute the condensed single group cross-section avg_xs.compute_xs() + return avg_xs def print_xs(self, subdomains='all'): @@ -515,7 +560,7 @@ class MultiGroupXS(object): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to print cross-section since it has not been computed' raise ValueError(msg) @@ -527,7 +572,7 @@ class MultiGroupXS(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) - if self._xs_tally is not None: + if self.xs_tally is not None: if subdomains == 'all': subdomains = self.get_subdomain_indices() @@ -581,7 +626,7 @@ class MultiGroupXS(object): xs_results['domain'] = self.domain xs_results['energy_groups'] = self.energy_groups xs_results['tallies'] = self.tallies - xs_results['xs_tally'] = self._xs_tally + xs_results['xs_tally'] = self.xs_tally xs_results['offset'] = self.offset xs_results['subdomain_indices'] = self.subdomain_indices @@ -632,36 +677,6 @@ class MultiGroupXS(object): self._offset = xs_results['offset'] self._subdomain_indices = xs_results['subdomain_indices'] - def load_from_statepoint(self, statepoint): - """Find tallies in an OpenMC StatePoint with the data needed to compute - multi-group cross-sections. - - This method is needed to compute cross-section data from tallies - in an OpenMC StatePoint object. - - Parameters - ---------- - statepoint : openmc.StatePoint - An OpenMC StatePoint object with tally data - - """ - - cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) - - statepoint.read_results() - - # Create Tallies to search for in StatePoint - if self.tallies is None: - self.create_tallies() - - # Find and store Tallies in StatePoint - for tally_type, tally in self.tallies.items(): - sp_tally = statepoint.get_tally(tally.scores, tally.filters, - tally.nuclides, - estimator=tally.estimator) - sp_tally = sp_tally.get_slice(scores=tally.scores, nuclides=tally.nuclides) - self.tallies[tally_type] = sp_tally - def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True, key=None): """ @@ -701,7 +716,7 @@ class MultiGroupXS(object): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to export cross-section since it has not been computed' raise ValueError(msg) @@ -749,23 +764,15 @@ class MultiGroupXS(object): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to get Pandas DataFrame since the ' \ 'cross-section has not been computed' raise ValueError(msg) # TODO: Reset column labels as cross-sections if needed - df = self._xs_tally.get_pandas_dataframe() + df = self.xs_tally.get_pandas_dataframe() return df - def from_statepoint(self, sp): - """ - - :return: - """ - - # Get the tallies from a statepoint file - class TotalXS(MultiGroupXS): @@ -794,8 +801,8 @@ class TotalXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['total'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class TransportXS(MultiGroupXS): @@ -832,8 +839,8 @@ class TransportXS(MultiGroupXS): self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class AbsorptionXS(MultiGroupXS): @@ -863,8 +870,8 @@ class AbsorptionXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['absorption'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class CaptureXS(MultiGroupXS): @@ -895,8 +902,8 @@ class CaptureXS(MultiGroupXS): self._xs_tally = self.tallies['absorption'] - self.tallies['fission'] self._xs_tally /= self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class FissionXS(MultiGroupXS): @@ -926,8 +933,8 @@ class FissionXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['fission'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class NuFissionXS(MultiGroupXS): @@ -957,8 +964,8 @@ class NuFissionXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class ScatterXS(MultiGroupXS): @@ -988,8 +995,8 @@ class ScatterXS(MultiGroupXS): OpenMC tally arithmetic""" self._xs_tally = self.tallies['scatter'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class NuScatterXS(MultiGroupXS): @@ -1019,8 +1026,8 @@ class NuScatterXS(MultiGroupXS): tally arithmetic""" self._xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class ScatterMatrixXS(MultiGroupXS): @@ -1067,8 +1074,8 @@ class ScatterMatrixXS(MultiGroupXS): rxn_tally = self.tallies['scatter'] self._xs_tally = rxn_tally / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) def get_xs(self, in_groups='all', out_groups='all', subdomains='all', value='mean'): @@ -1103,7 +1110,7 @@ class ScatterMatrixXS(MultiGroupXS): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) @@ -1131,7 +1138,7 @@ class ScatterMatrixXS(MultiGroupXS): filter_bins.append(self.energy_groups.get_group_bounds(out_group)) # Query the multi-group cross-section tally for the data - xs = self._xs_tally.get_values(filters=filters, + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) return xs @@ -1151,7 +1158,7 @@ class ScatterMatrixXS(MultiGroupXS): """ - if self._xs_tally is None: + if self.xs_tally is None: msg = 'Unable to print cross-section since it has not been computed' raise ValueError(msg) @@ -1239,8 +1246,8 @@ class NuScatterMatrixXS(ScatterMatrixXS): rxn_tally = self.tallies['nu-scatter'] self._xs_tally = rxn_tally / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) class Chi(MultiGroupXS): @@ -1292,7 +1299,7 @@ class Chi(MultiGroupXS): self._xs_tally = nu_fission_out / sum_nu_fission_in # Normalize chi to 1.0 - norm = self._xs_tally.summation(filters=['energyout'], + norm = self.xs_tally.summation(filters=['energyout'], filter_bins=energy_bins) # FIXME: CrossFilter for energy + energy messes up tally arithmetic @@ -1304,7 +1311,7 @@ class Chi(MultiGroupXS): norm = norm.tile_filter(energy_filter) self._xs_tally /= norm - self._xs_tally._mean = np.nan_to_num(self._xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self._xs_tally.std_dev) + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) # FIXME: Does this need to reset NaNs to zero? \ No newline at end of file From ecda3bef5efadcae1634e807e5369b5336955a6d Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 00:31:50 -0400 Subject: [PATCH 019/130] Subdomain-averaged multi-group cross-section calculation now working --- openmc/mgxs/mgxs.py | 49 ++++++++++++++++++++++--------------- openmc/tallies.py | 59 ++++++++++++++++++++++++--------------------- 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e0ffb6431..8a8414624 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -217,7 +217,7 @@ class MultiGroupXS(object): """Finds and stores the offset of the domain tally filter""" tally = self.tallies.values()[0] - domain_filter = tally.find_filter(self.domain_type, [self.domain.id]) + domain_filter = tally.find_filter(self.domain_type) self._offset = domain_filter.offset def set_subdomain_index(self, subdomain_id, index): @@ -280,7 +280,9 @@ class MultiGroupXS(object): cv.check_type('subdomains', subdomains, Iterable, Integral) if subdomains == 'all': - num_subdomains = len(self.subdomain_indices) + tally = self.tallies.values()[0] + domain_filter = tally.find_filter(self.domain_type) + num_subdomains = domain_filter.num_bins indices = np.arange(num_subdomains) else: indices = np.zeros(len(subdomains), dtype=np.int64) @@ -329,19 +331,22 @@ class MultiGroupXS(object): cv.check_type('offsets', indices, Iterable, Integral) if indices == 'all': - indices = self.get_subdomain_indices() + tally = self.tallies.values()[0] + domain_filter = tally.find_filter(self.domain_type) + num_subdomains = domain_filter.num_bins + subdomains = np.arange(num_subdomains) + else: + subdomains = np.zeros(len(indices), dtype=np.int64) + keys = self.subdomain_indices.keys() + values = self.subdomain_indices.values() - subdomains = np.zeros(len(indices), dtype=np.int64) - keys = self.subdomain_indices.keys() - values = self.subdomain_indices.values() - - for i, index in enumerate(indices): - if index in values: - subdomains[i] = keys[values.index(index)] - else: - msg = 'Unable to get subdomain for index "{0}" since it ' \ - 'is not a valid index'.format(index) - raise ValueError(msg) + for i, index in enumerate(indices): + if index in values: + subdomains[i] = keys[values.index(index)] + else: + msg = 'Unable to get subdomain for index "{0}" since it ' \ + 'is not a valid index'.format(index) + raise ValueError(msg) return subdomains @@ -520,11 +525,11 @@ class MultiGroupXS(object): if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) subdomain_indices = self.get_subdomain_indices(subdomains) - subdomain_indices = [(index,) for index in subdomain_indices] +# subdomain_indices = [(index,) for index in subdomain_indices] # Clone this MultiGroupXS to initialize the condensed version avg_xs = copy.deepcopy(self) - avg_xs.domain_type = 'avg. ' + avg_xs.domain_type + avg_xs._domain_type = 'avg. ' + avg_xs.domain_type # Reset subdomain indices and offsets for distribcell domains if self.domain_type == 'distribcell': @@ -534,7 +539,7 @@ class MultiGroupXS(object): # Overwrite tallies with new subdomain-averaged versions avg_xs._tallies = {} for tally_type, tally in self.tallies.items(): - tally_sum = tally.summation(filters=[self.domain_type], + tally_sum = tally.summation(filter=self.domain_type, filter_bins=subdomain_indices) tally_sum /= len(subdomains) avg_xs.tallies[tally_type] = tally_sum @@ -1281,13 +1286,19 @@ class Chi(MultiGroupXS): # FIXME: Make filter bins simpler in Tally.summation(...) # Construct energy group filter bins to sum across + ''' filter_bins = [] for group in range(1, self.num_groups+1): group_bounds = self.energy_groups.get_group_bounds(group) filter_bins.append((group_bounds,)) energy_bins = [filter_bins] + ''' - sum_nu_fission_in = nu_fission_in.summation(filters=['energy'], + energy_bins = [] + for group in range(1, self.num_groups+1): + energy_bins.append(self.energy_groups.get_group_bounds(group)) + + sum_nu_fission_in = nu_fission_in.summation(filter='energy', filter_bins=energy_bins) # FIXME: Need ability to override energy groups with group numbers @@ -1299,7 +1310,7 @@ class Chi(MultiGroupXS): self._xs_tally = nu_fission_out / sum_nu_fission_in # Normalize chi to 1.0 - norm = self.xs_tally.summation(filters=['energyout'], + norm = self.xs_tally.summation(filter='energyout', filter_bins=energy_bins) # FIXME: CrossFilter for energy + energy messes up tally arithmetic diff --git a/openmc/tallies.py b/openmc/tallies.py index 9b3056818..221dc2854 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -9,7 +9,7 @@ import sys import numpy as np -from openmc import Mesh, Filter, Trigger, Nuclide +from openmc import Mesh, Filter, Trigger, Nuclide, FILTER_TYPES from openmc.cross import CrossScore, CrossNuclide, CrossFilter from openmc.summary import Summary import openmc.checkvalue as cv @@ -78,8 +78,8 @@ class Tally(object): mean : ndarray An array containing the sample mean for each bin std_dev : ndarray - An array containing the sample standard deviation for each bin + """ def __init__(self, tally_id=None, name=''): @@ -713,7 +713,7 @@ class Tally(object): filter_type : str The type of Filter (e.g., 'cell', 'energy', etc.) - filter_bin : int, list + filter_bin : int, tuple The bin is an integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. The bin is an integer for the cell instance ID for 'distribcell' Filters. The bin is a 2-tuple of @@ -2277,6 +2277,8 @@ class Tally(object): if filter_type in ['energy', 'energyout']: bin_indices.append(bin_index) bin_indices.append(bin_index+1) + elif filter_type == 'distribcell': + bin_indices.append(0) else: bin_indices.append(bin_index) @@ -2292,13 +2294,13 @@ class Tally(object): return new_tally - def summation(self, scores=[], filters=[], filter_bins=[], nuclides=[]): - """Build a sliced tally for the specified filters, scores and nuclides. + def summation(self, scores=[], filter=None, filter_bins=[], nuclides=[]): + """Build a sliced tally for the specified filter bins, nuclides, scores. This method constructs a new tally to encapsulate a subset of the data represented by this tally. The subset of data to include in the tally - slice is determined by the scores, filters and nuclides specified in - the input parameters. + slice is determined by the scores, filter bins and nuclides specified + in the input parameters. Parameters ---------- @@ -2306,21 +2308,19 @@ class Tally(object): A list of one or more score strings to sum across (e.g., ['absorption', 'nu-fission']; default is []) - filters : list - A list of filter type strings to sum across - (e.g., ['mesh', 'energy']; default is []) + filter : str + A filter type string (e.g., 'cell', 'energy') corresponding to the + filter bins to sum across - filter_bins : list of Iterables - A list of the filter bins corresponding to the filter_types - parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin - in the list is the integer ID for 'material', 'surface', 'cell', - 'cellborn', and 'universe' Filters. Each bin is an integer for the - cell instance ID for 'distribcell Filters. Each bin is a 2-tuple of - floats for 'energy' and 'energyout' filters corresponding to the - energy boundaries of the bin of interest. The bin is a (x,y,z) - 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. The order of the bins in the list must correspond to the - filter_types parameter. + filter_bins : Iterable of Integral or tuple + A list of the filter bins corresponding to the filters parameter + Each bin in the list is the integer ID for 'material', 'surface', + 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer + for the cell instance ID for 'distribcell Filters. Each bin is a + 2-tuple of floats for 'energy' and 'energyout' filters corresponding + to the energy boundaries of the bin of interest. Each bin is an + (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of + interest. nuclides : list A list of nuclide name strings to sum across @@ -2347,15 +2347,20 @@ class Tally(object): else: nuclides = [[nuclide] for nuclide in nuclides] - # If user did not specify any filter bins, do not sum across filter bins - if len(filters) == 0: + # Sum across any filter bins specified by the user + if filter in FILTER_TYPES.values(): + filter_bins = [[(filter_bin,)] for filter_bin in filter_bins] + filters = [[filter]] + # If user did not specify a filter type, do not sum across filter bins + else: filter_bins = [[]] filters = [[]] - # Sum across any filter bins specified by the user + ''' else: - filter_bins = list(itertools.product(*filter_bins)) - filter_bins = [list(filter_bin) for filter_bin in filter_bins] - filters = [filters] +# filter_bins = list(itertools.product(*filter_bins)) + filter_bins = [[filter_bin] for filter_bin in filter_bins] + filters = [[filter]] + ''' # Initialize Tally sum tally_sum = 0 From da6e953319522cd2d5b5b5e8dadb3d9a06cc2cf0 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 01:14:38 -0400 Subject: [PATCH 020/130] MultiGroupXS print_xs and get_xs routines now working --- openmc/mgxs/mgxs.py | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 8a8414624..56af455e8 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -461,15 +461,16 @@ class MultiGroupXS(object): # Construct a collection of the domain filter bins if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) - filters.append(self.domain_type) - filter_bins.append(tuple(subdomains)) + 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 groups != 'all': cv.check_iterable_type('groups', groups, Integral) - filters.append('energy') for group in groups: - filter_bins.append(self.energy_groups.get_group_bounds(group)) + filters.append('energy') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) # Query the multi-group cross-section tally for the data xs = self.xs_tally.get_values(filters=filters, @@ -521,11 +522,7 @@ class MultiGroupXS(object): raise ValueError(msg) # Construct a collection of the subdomain filter bins to average across - # FIXME: Make Tally.summation take single rather than nested tuples - if subdomains != 'all': - cv.check_iterable_type('subdomains', subdomains, Integral) subdomain_indices = self.get_subdomain_indices(subdomains) -# subdomain_indices = [(index,) for index in subdomain_indices] # Clone this MultiGroupXS to initialize the condensed version avg_xs = copy.deepcopy(self) @@ -596,7 +593,9 @@ class MultiGroupXS(object): string += template.format('', group, bounds[0], bounds[1]) average = self.get_xs([group], [subdomain], 'mean') rel_err = self.get_xs([group], [subdomain], 'rel_err')*100. - string += '{:.2e}+/-{:1.2e}%'.format(average, rel_err) + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] + string += '{0:.2e} +/- {1:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' @@ -1062,13 +1061,13 @@ class ScatterMatrixXS(MultiGroupXS): # Initialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correct=False): + def compute_xs(self, correction='None'): """Computes the multi-group scattering matrix using OpenMC tally arithmetic""" - # FIXME: This should only subtract P1 from the diagonal!!! - if correct: - scatter_p1 = self.tallies['scatter-P1'] + # If using P0 correction subtract scatter-P1 from the diagonal + if correction == 'P0': + scatter_p1 = self.tallies['scatter-1'] scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges @@ -1204,7 +1203,9 @@ class ScatterMatrixXS(MultiGroupXS): [subdomain], 'mean') rel_err = self.get_xs([in_group], [out_group], [subdomain], 'rel. err.')*100. - string += '{:.2e}+/-{:1.2e}%'.format(average, rel_err) + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] + string += '{0:1.2e} +/- {:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' @@ -1234,13 +1235,13 @@ class NuScatterMatrixXS(ScatterMatrixXS): # Intialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correct=False): + def compute_xs(self, correction='None'): """Computes the multi-group nu-scattering matrix using OpenMC tally arithmetic""" - # FIXME: This should only subtract P1 from the diagonal!!! - if correct: - scatter_p1 = self.tallies['scatter-P1'] + # If using P0 correction subtract scatter-P1 from the diagonal + if correction == 'P0': + scatter_p1 = self.tallies['scatter-1'] scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges From 925d227d1fd64b552c07eb5972525e3350c28874 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 01:34:54 -0400 Subject: [PATCH 021/130] The print_xs routine for the Python API ScatterMatrixXS class is now working --- openmc/mgxs/mgxs.py | 43 ++++++++++++++++++++++++------------------- openmc/tallies.py | 2 +- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 56af455e8..cd3302e2a 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -455,6 +455,8 @@ class MultiGroupXS(object): msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + filters = [] filter_bins = [] @@ -593,8 +595,8 @@ class MultiGroupXS(object): string += template.format('', group, bounds[0], bounds[1]) average = self.get_xs([group], [subdomain], 'mean') rel_err = self.get_xs([group], [subdomain], 'rel_err')*100. - average = average.flatten()[0] - rel_err = rel_err.flatten()[0] + average = np.nan_to_num(average.flatten())[0] + rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{0:.2e} +/- {1:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' @@ -1118,7 +1120,7 @@ class ScatterMatrixXS(MultiGroupXS): msg = 'Unable to get cross-section since it has not been computed' raise ValueError(msg) - cv.check_value('value', value, ['mean', 'std. dev.', 'rel. err.']) + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) filters = [] filter_bins = [] @@ -1126,20 +1128,23 @@ class ScatterMatrixXS(MultiGroupXS): # Construct a collection of the domain filter bins if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) - filters.append(self.domain_type) - filter_bins.append(tuple(subdomains)) + 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 in_groups != 'all': - cv.check_iterable_type('in_groups', in_groups, Integral) - filters.append('energy') - for in_group in in_groups: - filter_bins.append(self.energy_groups.get_group_bounds(in_group)) + cv.check_iterable_type('groups', in_groups, Integral) + for group in in_groups: + filters.append('energy') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) + + # Construct list of energy group bounds tuples for all requested groups if out_groups != 'all': - cv.check_iterable_type('out_groups', out_groups, Integral) - filters.append('energy') - for out_group in out_groups: - filter_bins.append(self.energy_groups.get_group_bounds(out_group)) + cv.check_iterable_type('groups', out_groups, Integral) + for group in out_groups: + filters.append('energyout') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) # Query the multi-group cross-section tally for the data xs = self.xs_tally.get_values(filters=filters, @@ -1167,7 +1172,7 @@ class ScatterMatrixXS(MultiGroupXS): raise ValueError(msg) if subdomains != 'all': - cv.check_value('subdomains', subdomains, Iterable, Integral) + cv.check_iterable_type('subdomains', subdomains, Integral) string = 'Multi-Group XS\n' string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.xs_type) @@ -1183,7 +1188,7 @@ class ScatterMatrixXS(MultiGroupXS): string += template.format('', group, bounds[0], bounds[1]) if subdomains == 'all': - subdomains = self.subdomain_indices.keys() + subdomains = self.get_subdomain_indices() # Loop over all subdomains for subdomain in subdomains: @@ -1202,10 +1207,10 @@ class ScatterMatrixXS(MultiGroupXS): average = self.get_xs([in_group], [out_group], [subdomain], 'mean') rel_err = self.get_xs([in_group], [out_group], - [subdomain], 'rel. err.')*100. - average = average.flatten()[0] - rel_err = rel_err.flatten()[0] - string += '{0:1.2e} +/- {:1.2e}%'.format(average, rel_err) + [subdomain], 'rel_err')*100. + average = np.nan_to_num(average.flatten())[0] + rel_err = np.nan_to_num(rel_err.flatten())[0] + string += '{0:1.2e} +/- {1:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' diff --git a/openmc/tallies.py b/openmc/tallies.py index 221dc2854..bccfd2eb5 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1009,7 +1009,7 @@ class Tally(object): else: msg = 'Unable to return results from Tally ID="{0}" since the ' \ 'the requested value "{1}" is not \'mean\', \'std_dev\', ' \ - '\rel_err\', \'sum\', or \'sum_sq\''.format(self.id, value) + '\'rel_err\', \'sum\', or \'sum_sq\''.format(self.id, value) raise LookupError(msg) return data From 67312eaf8f5181536ce37bb2346792dcd416de05 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 01:43:30 -0400 Subject: [PATCH 022/130] MultiGroupXS pickle and unpickle routines now working --- openmc/mgxs/mgxs.py | 91 +++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 53 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index cd3302e2a..cf878e86a 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -556,26 +556,18 @@ class MultiGroupXS(object): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross-sections to include in the report - Raises - ------ - ValueError - When this method is called before the multi-group cross-section is - computed from tally data. - """ - if self.xs_tally is None: - msg = 'Unable to print cross-section since it has not been computed' - raise ValueError(msg) - if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) + # Build header for string with type and domain info string = 'Multi-Group XS\n' string += '{0: <16}=\t{1}\n'.format('\tType', self.xs_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) + # Append cross-section data if it has been computed if self.xs_tally is not None: if subdomains == 'all': subdomains = self.get_subdomain_indices() @@ -597,7 +589,7 @@ class MultiGroupXS(object): rel_err = self.get_xs([group], [subdomain], 'rel_err')*100. average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] - string += '{0:.2e} +/- {1:1.2e}%'.format(average, rel_err) + string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' @@ -674,11 +666,11 @@ class MultiGroupXS(object): # Store the MultiGroupXS class attributes self.name = xs_results['name'] - self.xs_type = xs_results['xs_type'] + self._xs_type = xs_results['xs_type'] self.domain_type = xs_results['domain_type'] self.domain = xs_results['domain'] self.energy_groups = xs_results['energy_groups'] - self.tallies = xs_results['tallies'] + self._tallies = xs_results['tallies'] self._xs_tally = xs_results['xs_tally'] self._offset = xs_results['offset'] self._subdomain_indices = xs_results['subdomain_indices'] @@ -1159,60 +1151,53 @@ class ScatterMatrixXS(MultiGroupXS): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross-sections to include in the report - Raises - ------ - ValueError - When this method is called before the multi-group cross-section is - computed from tally data. - """ - if self.xs_tally is None: - msg = 'Unable to print cross-section since it has not been computed' - raise ValueError(msg) - if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) + # Build header for string with type and domain info string = 'Multi-Group XS\n' - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.xs_type) - string += '{0: <16}{1}{2}\n'.format('\tDomain Type', '=\t', self.domain_type) - string += '{0: <16}{1}{2}\n'.format('\tDomain ID', '=\t', self.domain.id) + string += '{0: <16}=\t{1}\n'.format('\tType', self.xs_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) - string += '{0: <16}\n'.format('\tEnergy Groups:') - template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' + # Append cross-section data if it has been computed + if self.xs_tally is not None: + string += '{0: <16}\n'.format('\tEnergy Groups:') + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' - # 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]) + # 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]) - if subdomains == 'all': - subdomains = self.get_subdomain_indices() + if subdomains == 'all': + subdomains = self.get_subdomain_indices() - # Loop over all subdomains - for subdomain in subdomains: + # Loop over all subdomains + for subdomain in subdomains: - if self.domain_type == 'distribcell': - string += \ - '{0: <16}{1}{2}\n'.format('\tSubdomain', '=\t', subdomain) + if self.domain_type == 'distribcell': + string += \ + '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') - template = '{0: <12}Group {1} -> Group {2}:\t\t' + string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + template = '{0: <12}Group {1} -> Group {2}:\t\t' - # Loop over incoming/outgoing energy groups ranges - for in_group in range(1, self.num_groups+1): - for out_group in range(1, self.num_groups+1): - string += template.format('', in_group, out_group) - average = self.get_xs([in_group], [out_group], - [subdomain], 'mean') - rel_err = self.get_xs([in_group], [out_group], - [subdomain], 'rel_err')*100. - average = np.nan_to_num(average.flatten())[0] - rel_err = np.nan_to_num(rel_err.flatten())[0] - string += '{0:1.2e} +/- {1:1.2e}%'.format(average, rel_err) + # Loop over incoming/outgoing energy groups ranges + for in_group in range(1, self.num_groups+1): + for out_group in range(1, self.num_groups+1): + string += template.format('', in_group, out_group) + average = self.get_xs([in_group], [out_group], + [subdomain], 'mean') + rel_err = self.get_xs([in_group], [out_group], + [subdomain], 'rel_err') * 100. + average = np.nan_to_num(average.flatten())[0] + rel_err = np.nan_to_num(rel_err.flatten())[0] + string += '{:1.2e} +/- {:1.2e}%'.format(average, rel_err) + string += '\n' string += '\n' - string += '\n' print(string) From 39040c587a5e74a8159b122e1bf2fcd3f750fec0 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 09:28:49 -0400 Subject: [PATCH 023/130] Pandas DataFrames for MultiGroupXS now swap energy bounds with group indices if needed --- openmc/mgxs/mgxs.py | 72 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index cf878e86a..659a24228 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -231,6 +231,7 @@ class MultiGroupXS(object): ---------- subdomain_id : Integral The ID for the subdomain + index : Integral The filter bin index for the subdomain @@ -361,10 +362,13 @@ class MultiGroupXS(object): ---------- scores : Iterable of str Scores for each tally + filters : Iterable of tuple of Filter Tuples of non-spatial domain filters for each tally + keys : Iterable of str Key string used to store each tally in the tallies dictionary + estimator : {'analog' or 'tracklength'} Type of estimator to use for each tally @@ -431,8 +435,10 @@ class MultiGroupXS(object): ---------- groups : Iterable of Integral or 'all' Energy groups of interest + subdomains : Iterable of Integral or 'all' Subdomain IDs of interest + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -602,6 +608,7 @@ class MultiGroupXS(object): ---------- filename : str Filename for the pickled binary file (default is 'mgxs') + directory : str Directory for the pickled binary file (default is 'mgxs') @@ -640,6 +647,7 @@ class MultiGroupXS(object): ---------- filename : str Filename for the pickled binary file (default is 'mgxs') + directory : str Directory for the pickled binary file (default is 'mgxs') @@ -701,8 +709,10 @@ class MultiGroupXS(object): ---------- filename : str Filename for the exported file (default is 'mgxs') + directory : str Directory for the exported file (default is 'mgxs') + format : {'csv', 'excel', 'pickle', 'latex'} The format for the exported data file @@ -720,7 +730,7 @@ class MultiGroupXS(object): cv.check_type('filename', filename, basestring) cv.check_type('directory', directory, basestring) - cv.check_values('format', format, ['csv', 'excel', 'pickle', 'latex']) + cv.check_value('format', format, ['csv', 'excel', 'pickle', 'latex']) # Make directory if it does not exist if not os.path.exists(directory): @@ -730,25 +740,42 @@ class MultiGroupXS(object): filename = filename.replace(' ', '-') # Get a Pandas DataFrame for the data + # FIXME: Column niceties need to be implemented here df = self.get_pandas_dataframe() # Export the data using Pandas IO API if format == 'csv': df.to_csv(filename + '.csv') elif format == 'excel': - df.to_excel(filename + '.xslx') + # FIXME: Overwrite column CrossScores with scores + df.to_excel(filename + '.xls') elif format == 'pickle': df.to_pickle(filename + '.pkl') elif format == 'latex': # FIXME: Insert greek letters + # FIXME: Need to put document header around string df.to_latex(filename + '.tex') - def get_pandas_dataframe(self): + def get_pandas_dataframe(self, groups='indices', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. This routine leverages the Tally.get_pandas_dataframe(...) routine, but renames the columns with terminology appropriate for cross-section data. + Parameters + ---------- + groups : {'indices' or 'bounds'} + When set to 'indices', integer group indices are inserted in the + energy column(s) of the DataFrame. When set to 'bounds', the lower + and upper energy bounds are used. + + summary : None or Summary + An optional Summary object to be used to construct columns for + distribcell tally filters (default is None). The geometric + information in the Summary object is embedded into a Multi-index + column with a geometric "path" to each distribcell intance. + NOTE: This option requires the OpenCG Python package. + Returns ------- pandas.DataFrame @@ -767,8 +794,40 @@ class MultiGroupXS(object): 'cross-section has not been computed' raise ValueError(msg) - # TODO: Reset column labels as cross-sections if needed - df = self.xs_tally.get_pandas_dataframe() + # Get a Pandas DataFrame from the derived xs tally + df = self.xs_tally.get_pandas_dataframe(summary=summary) + + # Remove the score column since it is homogeneous and redundant + if summary: + df = df.drop('score', level=0, axis=1) + else: + df = df.drop('score', axis=1) + + # Use group indices in place of energy bounds ("1" for fastest group) + if groups == 'indices': + + # Rename the column label for energy in the dataframe + columns = [] + if 'energy [MeV]' in df: + df.rename(columns={'energy [MeV]': 'group in'}, inplace=True) + columns.append('group in') + if 'energyout [MeV]' in df: + df.rename(columns={'energyout [MeV]': 'group out'}, inplace=True) + columns.append('group out') + + # Loop over all energy groups and override the bounds with indices + template = '({0:.1e} - {1:.1e})' + bins = self.energy_groups.group_edges + for column in columns: + for i in range(self.num_groups): + group = template.format(bins[i], bins[i+1]) + row_indices = df[column] == group + df.loc[row_indices, column] = self.num_groups - i + + # Sort the dataframe by domain type id (e.g., distribcell id) and + # energy groups such that data is from fast to thermal + df.sort([self.domain_type] + columns, inplace=True) + return df @@ -1086,10 +1145,13 @@ class ScatterMatrixXS(MultiGroupXS): ---------- in_groups : Iterable of Integral or 'all' Incoming energy groups of interest + out_groups : Iterable of Integral or 'all' Outgoing energy groups of interest + subdomains : Iterable of Integral or 'all' Subdomain IDs of interest + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted From ad981a6035f7e82a0a7689a828a0f378c632a37b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 09:33:41 -0400 Subject: [PATCH 024/130] Fixed bug in subdomain-averaged multi-group cross-sections --- openmc/mgxs/mgxs.py | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 659a24228..6d975502e 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -534,7 +534,6 @@ class MultiGroupXS(object): # Clone this MultiGroupXS to initialize the condensed version avg_xs = copy.deepcopy(self) - avg_xs._domain_type = 'avg. ' + avg_xs.domain_type # Reset subdomain indices and offsets for distribcell domains if self.domain_type == 'distribcell': @@ -698,7 +697,8 @@ class MultiGroupXS(object): import h5py raise NotImplementedError('HDF5 storage is not yet implemented') - def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv'): + def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv', + groups='indices', summary=None): """Export the multi-group cross-section data to a file. This routine leverages the functionality in the Pandas library to @@ -716,18 +716,20 @@ class MultiGroupXS(object): format : {'csv', 'excel', 'pickle', 'latex'} The format for the exported data file - Raises - ------ - ValueError - When this method is called before the multi-group cross-section is - computed from tally data. + groups : {'indices' or 'bounds'} + When set to 'indices' (default), integer group indices are inserted + in the energy in/out column(s) of the DataFrame. When it is 'bounds' + the lower and upper energy bounds are used. + + summary : None or Summary + An optional Summary object to be used to construct columns for + distribcell tally filters (default is None). The geometric + information in the Summary object is embedded into a Multi-index + column with a geometric "path" to each distribcell intance. + NOTE: This option requires the OpenCG Python package. """ - if self.xs_tally is None: - msg = 'Unable to export cross-section since it has not been computed' - raise ValueError(msg) - cv.check_type('filename', filename, basestring) cv.check_type('directory', directory, basestring) cv.check_value('format', format, ['csv', 'excel', 'pickle', 'latex']) @@ -740,8 +742,7 @@ class MultiGroupXS(object): filename = filename.replace(' ', '-') # Get a Pandas DataFrame for the data - # FIXME: Column niceties need to be implemented here - df = self.get_pandas_dataframe() + df = self.get_pandas_dataframe(groups, summary) # Export the data using Pandas IO API if format == 'csv': @@ -765,9 +766,9 @@ class MultiGroupXS(object): Parameters ---------- groups : {'indices' or 'bounds'} - When set to 'indices', integer group indices are inserted in the - energy column(s) of the DataFrame. When set to 'bounds', the lower - and upper energy bounds are used. + When set to 'indices' (default), integer group indices are inserted + in the energy in/out column(s) of the DataFrame. When it is 'bounds' + the lower and upper energy bounds are used. summary : None or Summary An optional Summary object to be used to construct columns for From e663aa6ec88eb63a2a2726093717f450d3b39d90 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 12:25:31 -0400 Subject: [PATCH 025/130] Fixed mergeable tallies for use with MultiGroupXS subclasses in Python API --- openmc/filter.py | 29 +++++++++++++- openmc/mgxs/mgxs.py | 91 ++++++++++++++++++++++++++++++++++---------- openmc/statepoint.py | 4 +- 3 files changed, 101 insertions(+), 23 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index bcbe61eb8..e7e527531 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -282,12 +282,39 @@ class Filter(object): merged_filter = copy.deepcopy(self) # Merge unique filter bins - merged_bins = list(set(self.bins + filter.bins)) + merged_bins = list(set(list(self.bins) + list(filter.bins))) merged_filter.bins = merged_bins merged_filter.num_bins = len(merged_bins) return merged_filter + def is_subset(self, other): + """Determine if another filter is a subset of this filter. + + If all of the bins in the other filter are included as bins in this + filter, then it is a subset of this filter. + + Parameters + ---------- + other : Filter + The filter to query as a subset of this filter + + Returns + ------- + boolean + Whether or not the other filter is a subset of this filter + """ + if not isinstance(other, Filter): + return False + elif self.type != other.type: + return False + + for bin in other.bins: + if bin not in self.bins: + return False + + return True + def get_bin_index(self, filter_bin): """Returns the index in the Filter for some bin. diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 6d975502e..18e87bba1 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -158,6 +158,10 @@ class MultiGroupXS(object): def name(self): return self._name + @property + def xs_type(self): + return self._xs_type + @property def domain(self): return self._domain @@ -280,7 +284,9 @@ class MultiGroupXS(object): if subdomains != 'all': cv.check_type('subdomains', subdomains, Iterable, Integral) - if subdomains == 'all': + if subdomains == 'all' and self.domain_type != 'distribcell': + indices = [0] + elif subdomains == 'all' and self.domain_type == 'distribcell': tally = self.tallies.values()[0] domain_filter = tally.find_filter(self.domain_type) num_subdomains = domain_filter.num_bins @@ -331,7 +337,9 @@ class MultiGroupXS(object): if indices != 'all': cv.check_type('offsets', indices, Iterable, Integral) - if indices == 'all': + if indices == 'all' and self.domain_type != 'distribcell': + subdomains = [self.domain.id] + elif indices == 'all' and self.domain_type == 'distribcell': tally = self.tallies.values()[0] domain_filter = tally.find_filter(self.domain_type) num_subdomains = domain_filter.num_bins @@ -382,6 +390,7 @@ class MultiGroupXS(object): # Create a domain Filter object domain_filter = openmc.Filter(self.domain_type, self.domain.id) + domain_filter.num_bins = 1 for score, key, filters in zip(scores, keys, all_filters): self.tallies[key] = openmc.Tally(name=self.name) @@ -413,8 +422,14 @@ class MultiGroupXS(object): statepoint.read_results() # Create Tallies to search for in StatePoint - if self.tallies is None: - self.create_tallies() + self.create_tallies() + + if self.domain_type == 'distribcell': + filters = [] + filter_bins = [] + else: + filters = [self.domain_type] + filter_bins = [(self.domain.id,)] # Find, slice and store Tallies from StatePoint # The tally slicing is needed if tally merging was used @@ -422,7 +437,8 @@ class MultiGroupXS(object): sp_tally = statepoint.get_tally(tally.scores, tally.filters, tally.nuclides, estimator=tally.estimator) - sp_tally = sp_tally.get_slice(scores=tally.scores, nuclides=tally.nuclides) + sp_tally = sp_tally.get_slice(tally.scores, filters, + filter_bins, tally.nuclides) self.tallies[tally_type] = sp_tally def get_xs(self, groups='all', subdomains='all', value='mean'): @@ -575,7 +591,7 @@ class MultiGroupXS(object): # Append cross-section data if it has been computed if self.xs_tally is not None: if subdomains == 'all': - subdomains = self.get_subdomain_indices() + subdomains = self.get_subdomains() # Loop over all subdomains for subdomain in subdomains: @@ -697,8 +713,7 @@ class MultiGroupXS(object): import h5py raise NotImplementedError('HDF5 storage is not yet implemented') - def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv', - groups='indices', summary=None): + def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv'): """Export the multi-group cross-section data to a file. This routine leverages the functionality in the Pandas library to @@ -742,20 +757,41 @@ class MultiGroupXS(object): filename = filename.replace(' ', '-') # Get a Pandas DataFrame for the data - df = self.get_pandas_dataframe(groups, summary) + df = self.get_pandas_dataframe() + + # Capitalize column label strings + df.columns = map(str.title, df.columns) # Export the data using Pandas IO API if format == 'csv': - df.to_csv(filename + '.csv') + df.to_csv(filename + '.csv', index=False) elif format == 'excel': - # FIXME: Overwrite column CrossScores with scores - df.to_excel(filename + '.xls') + df.to_excel(filename + '.xls', index=False) elif format == 'pickle': df.to_pickle(filename + '.pkl') elif format == 'latex': + if self.domain_type == 'distribcell': + msg = 'Unable to export distribcell multi-group cross-section' \ + 'data to a LaTeX table' + raise NotImplementedError(msg) + # FIXME: Insert greek letters - # FIXME: Need to put document header around string - df.to_latex(filename + '.tex') + + df.to_latex(filename + '.tex', bold_rows=True, + longtable=True, index=False) + + # Surround LaTeX table with code needed to run pdflatex + with open(filename + '.tex','r') as original: + data = original.read() + with open(filename + '.tex','w') as modified: + modified.write( + '\\documentclass[preview, 12pt, border=1mm]{standalone}\n') + modified.write('\\usepackage{caption}\n') + modified.write('\\usepackage{longtable}\n') + modified.write('\\usepackage{booktabs}\n') + modified.write('\\begin{document}\n\n') + modified.write(data) + modified.write('\n\\end{document}') def get_pandas_dataframe(self, groups='indices', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. @@ -799,7 +835,7 @@ class MultiGroupXS(object): df = self.xs_tally.get_pandas_dataframe(summary=summary) # Remove the score column since it is homogeneous and redundant - if summary: + if summary and self.domain_type == 'distribcell': df = df.drop('score', level=0, axis=1) else: df = df.drop('score', axis=1) @@ -836,7 +872,7 @@ class TotalXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(TotalXS, self).__init__(domain, domain_type, groups, name) - self.xs_type = 'total' + self._xs_type = 'total' def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross-section.""" @@ -849,6 +885,7 @@ class TotalXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -867,7 +904,7 @@ class TransportXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(TransportXS, self).__init__(domain, domain_type, groups, name) - self.xs_type = 'transport' + self._xs_type = 'transport' def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross-section.""" @@ -881,6 +918,8 @@ class TransportXS(MultiGroupXS): group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) energyout_filter = openmc.Filter('energyout', group_edges) + energy_filter.num_bins = self.num_groups + energyout_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter], [energyout_filter]] # Initialize the Tallies @@ -905,7 +944,7 @@ class AbsorptionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(AbsorptionXS, self).__init__(domain, domain_type, groups, name) - self.xs_type = 'absorption' + self._xs_type = 'absorption' def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross-section.""" @@ -918,6 +957,7 @@ class AbsorptionXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -949,6 +989,7 @@ class CaptureXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter], [energy_filter]] # Initialize the Tallies @@ -981,6 +1022,7 @@ class FissionXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -1012,6 +1054,7 @@ class NuFissionXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -1043,6 +1086,7 @@ class ScatterXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Intialize the Tallies @@ -1074,6 +1118,7 @@ class NuScatterXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) + energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -1100,6 +1145,8 @@ class ScatterMatrixXS(MultiGroupXS): group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) energyout = openmc.Filter('energyout', group_edges) + energy.num_bins = self.num_groups + energyout.num_bins = self.num_groups # Create a list of scores for each Tally to be created if correct: @@ -1236,7 +1283,7 @@ class ScatterMatrixXS(MultiGroupXS): string += template.format('', group, bounds[0], bounds[1]) if subdomains == 'all': - subdomains = self.get_subdomain_indices() + subdomains = self.get_subdomains() # Loop over all subdomains for subdomain in subdomains: @@ -1269,7 +1316,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, name) - self.xs_type = 'nu-scatter matrix' + self._xs_type = 'nu-scatter matrix' def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross-section.""" @@ -1283,6 +1330,8 @@ class NuScatterMatrixXS(ScatterMatrixXS): group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) energyout = openmc.Filter('energyout', group_edges) + energy.num_bins = self.num_groups + energyout.num_bins = self.num_groups filters = [[energy], [energy, energyout], [energyout]] # Intialize the Tallies @@ -1326,6 +1375,8 @@ class Chi(MultiGroupXS): group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) energyout_filter = openmc.Filter('energyout', group_edges) + energy_filter.num_bins = self.num_groups + energyout_filter.num_bins = self.num_groups filters = [[energy_filter], [energyout_filter]] # Intialize the Tallies diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 0730c5c65..6e6accf83 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -692,8 +692,8 @@ class StatePoint(object): contains_filters = True # Iterate over the Filters requested by the user - for filter in filters: - if filter not in test_tally.filters: + for filter, test_filter in zip(filters, test_tally.filters): + if not test_filter.is_subset(filter): contains_filters = False break From 442e0d88e9701a6897406006debe7ef7e2ea25a8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 12:42:23 -0400 Subject: [PATCH 026/130] Made Python API Filter.num_bins property decorator look at bins attribute for smarter return --- openmc/filter.py | 11 ++++++++++- openmc/mgxs/mgxs.py | 18 ------------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index e7e527531..10a245d75 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -35,6 +35,8 @@ class Filter(object): The type of the tally filter. bins : Integral or Iterable of Integral or Iterable of float The bins for the filter + num_bins : Integral + The number of filter bins mesh : Mesh or None A Mesh object for 'mesh' type filters. offset : Integral @@ -110,7 +112,14 @@ class Filter(object): @property def num_bins(self): - return self._num_bins + if self.bins is None: + return 0 + elif self.type in ['energy', 'energyout']: + return len(self.bins)-1 + elif self.type in ['cell', 'cellborn', 'surface', 'universe', 'material']: + return len(self.bins) + else: + return self._num_bins @property def mesh(self): diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 18e87bba1..5abc4fe0a 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -885,7 +885,6 @@ class TotalXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -918,8 +917,6 @@ class TransportXS(MultiGroupXS): group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) energyout_filter = openmc.Filter('energyout', group_edges) - energy_filter.num_bins = self.num_groups - energyout_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter], [energyout_filter]] # Initialize the Tallies @@ -957,7 +954,6 @@ class AbsorptionXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -989,7 +985,6 @@ class CaptureXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter], [energy_filter]] # Initialize the Tallies @@ -1022,7 +1017,6 @@ class FissionXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -1054,7 +1048,6 @@ class NuFissionXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -1086,7 +1079,6 @@ class ScatterXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Intialize the Tallies @@ -1118,7 +1110,6 @@ class NuScatterXS(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) - energy_filter.num_bins = self.num_groups filters = [[energy_filter], [energy_filter]] # Initialize the Tallies @@ -1145,8 +1136,6 @@ class ScatterMatrixXS(MultiGroupXS): group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) energyout = openmc.Filter('energyout', group_edges) - energy.num_bins = self.num_groups - energyout.num_bins = self.num_groups # Create a list of scores for each Tally to be created if correct: @@ -1172,7 +1161,6 @@ class ScatterMatrixXS(MultiGroupXS): scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges - energy_filter.num_bins = self.num_groups scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) rxn_tally = self.tallies['scatter'] - scatter_p1 else: @@ -1330,8 +1318,6 @@ class NuScatterMatrixXS(ScatterMatrixXS): group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) energyout = openmc.Filter('energyout', group_edges) - energy.num_bins = self.num_groups - energyout.num_bins = self.num_groups filters = [[energy], [energy, energyout], [energyout]] # Intialize the Tallies @@ -1347,7 +1333,6 @@ class NuScatterMatrixXS(ScatterMatrixXS): scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges - energy_filter.num_bins = self.num_groups scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) rxn_tally = self.tallies['nu-scatter'] - scatter_p1 else: @@ -1375,8 +1360,6 @@ class Chi(MultiGroupXS): group_edges = self.energy_groups.group_edges energy_filter = openmc.Filter('energy', group_edges) energyout_filter = openmc.Filter('energyout', group_edges) - energy_filter.num_bins = self.num_groups - energyout_filter.num_bins = self.num_groups filters = [[energy_filter], [energyout_filter]] # Intialize the Tallies @@ -1423,7 +1406,6 @@ class Chi(MultiGroupXS): energy_filter = openmc.Filter(type='energyout') energy_filter.bins = self.energy_groups.group_edges - energy_filter.num_bins = self.num_groups norm = norm.tile_filter(energy_filter) self._xs_tally /= norm From fa86ae2fbba7eedf6bfe94a3874944cc1eb4e4fb Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 12:51:53 -0400 Subject: [PATCH 027/130] Removed references to Greek letters in MultiGroupXS latex generatoin --- openmc/mgxs/mgxs.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 5abc4fe0a..160ce1dcb 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -30,20 +30,6 @@ DOMAINS = [openmc.Cell, openmc.Material, openmc.Mesh] -# LaTeX Greek symbols for each cross-section type -GREEK = dict() -GREEK['total'] = '$\\Sigma_{t}$' -GREEK['transport'] = '$\\Sigma_{tr}$' -GREEK['absorption'] = '$\\Sigma_{a}$' -GREEK['capture'] = '$\\Sigma_{c}$' -GREEK['scatter'] = '$\\Sigma_{s}$' -GREEK['nu-scatter'] = '$\\nu\\Sigma_{s}$' -GREEK['scatter matrix'] = '$\\Sigma_{s}$' -GREEK['nu-scatter matrix'] = '$\\nu\\Sigma_{s}$' -GREEK['fission'] = '$\\Sigma_{f}$' -GREEK['nu-fission'] = '$\\nu\\Sigma_{f}$' -GREEK['chi'] = '$\\chi$' - class MultiGroupXS(object): """A multi-group cross-section for some energy group structure within @@ -775,8 +761,6 @@ class MultiGroupXS(object): 'data to a LaTeX table' raise NotImplementedError(msg) - # FIXME: Insert greek letters - df.to_latex(filename + '.tex', bold_rows=True, longtable=True, index=False) @@ -793,6 +777,7 @@ class MultiGroupXS(object): modified.write(data) modified.write('\n\\end{document}') + def get_pandas_dataframe(self, groups='indices', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. From 6d2a87fd35afda3a31af89c2104604514680d8be Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 13:04:27 -0400 Subject: [PATCH 028/130] Removed subdomain indices related methods and attributes from MultiGroupXS in Python API --- openmc/mgxs/mgxs.py | 179 +++++--------------------------------------- 1 file changed, 20 insertions(+), 159 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 160ce1dcb..d655472ed 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -70,12 +70,6 @@ class MultiGroupXS(object): xs_tally : Tally Derived tally for the multi-group cross-section. This attribute is None unless the multi-group cross-section has been computed. - subdomain_indices : dict - Integer subdomain IDs (keys) mapped to integer tally data array - indices (values) for 'distribcell' domain types. Each subdomain ID - corresponds to an instance of the cell domain. For all other domain - types, the domain has only one subdomain and this dictionary will - trivially map zero to zero. offset : Integral The filter offset for the domain filter @@ -95,12 +89,6 @@ class MultiGroupXS(object): self._num_groups = None self._tallies = dict() self._xs_tally = None - - # A dictionary used to compute indices into the xs array - # Keys - Domain ID (ie, maaterial ID, distribcell instance ID, etc) - # Values - Offset/stride into xs array - # NOTE: This is primarily used for distribcell domain types - self._subdomain_indices = dict() self._offset = None self.name = name @@ -124,8 +112,6 @@ class MultiGroupXS(object): clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._num_groups = self.num_groups clone._xs_tally = copy.deepcopy(self.xs_tally, memo) - clone._subdomain_indices = \ - copy.deepcopy(self.subdomain_indices, memo) clone._offset = copy.deepcopy(self.offset, memo) clone._tallies = dict() @@ -177,8 +163,10 @@ class MultiGroupXS(object): return self._offset @property - def subdomain_indices(self): - return self._subdomain_indices + def num_subdomains(self): + tally = self.tallies.values()[0] + domain_filter = tally.find_filter(self.domain_type) + return domain_filter.num_bins @name.setter def name(self, name): @@ -189,8 +177,6 @@ class MultiGroupXS(object): def domain(self, domain): cv.check_type('domain', domain, tuple(DOMAINS)) self._domain = domain - if self._domain_type in ['material', 'cell', 'universe', 'mesh']: - self._subdomain_indices[domain.id] = 0 @domain_type.setter def domain_type(self, domain_type): @@ -210,141 +196,6 @@ class MultiGroupXS(object): domain_filter = tally.find_filter(self.domain_type) self._offset = domain_filter.offset - def set_subdomain_index(self, subdomain_id, index): - """Set the filter bin index for a subdomain of the domain. - - This is useful when the domain type is 'distribcell', in which case one - may wish to map each subdomain (a cell instance) to its filter bin in - the derived multi-group cross-section tally data array. - - Parameters - ---------- - subdomain_id : Integral - The ID for the subdomain - - index : Integral - The filter bin index for the subdomain - - See also - -------- - MultiGroupXS.get_subdomains(), MultiGroupXS.get_subdomain_indices() - - """ - - cv.check_type('subdomain id', subdomain_id, Integral) - cv.check_type('subdomain index', index, Integral) - cv.check_greater_than('subdomain id', subdomain_id, 0, equality=True) - cv.check_greater_than('subdomain index', index, 0, equality=True) - self._subdomain_indices[subdomain_id] = index - - def get_subdomain_indices(self, subdomains='all'): - """Get the indices for one or more subdomains. - - This method can be used to extract the indices into the multi-group - cross-section tally data array for a subdomain. This is useful when the - domain type is 'distribcell', in which case one may wish to map each - subdomain (a cell instance) to its filter bin index in the derived - multi-group cross-section tally data array. - - Parameters - ---------- - subdomains : Iterable of Integral or 'all' - Subdomain IDs (distribcell instance IDs) of interest - - Returns - ---------- - indices : ndarray - The subdomain indices indexed in the order of the subdomains - - Raises - ------ - ValueError - When one of the subdomains is not a valid subdomain ID. - - See also - -------- - MultiGroupXS.get_subdomains(), MultiGroupXS.set_subdomain_index() - - """ - - if subdomains != 'all': - cv.check_type('subdomains', subdomains, Iterable, Integral) - - if subdomains == 'all' and self.domain_type != 'distribcell': - indices = [0] - elif subdomains == 'all' and self.domain_type == 'distribcell': - tally = self.tallies.values()[0] - domain_filter = tally.find_filter(self.domain_type) - num_subdomains = domain_filter.num_bins - indices = np.arange(num_subdomains) - else: - indices = np.zeros(len(subdomains), dtype=np.int64) - - for i, subdomain in enumerate(subdomains): - if subdomain in self.subdomain_indices: - indices[i] = self.subdomain_indices[subdomain] - else: - msg = 'Unable to get index for subdomain "{0}" since it ' \ - 'is not a valid subdomain'.format(subdomain) - raise ValueError(msg) - - return indices - - def get_subdomains(self, indices='all'): - """Get the subdomain IDs for one or more indices. - - This method can be used to extract the subdomains for the multi-group - cross-section from their indices in the tally data array. This is useful - when the domain type is 'distribcell', in which case one may wish to map - each subdomain (a cell instance) to its filter bin index in the derived - multi-group cross-section tally data array. - - Parameters - ---------- - indices : Iterable of Integral or 'all' - Subdomain indices of interest - - Returns - ---------- - subdomains : ndarray - Array of subdomain IDs indexed in the order of the indices - - Raises - ------ - ValueError - When one of the indices is not a valid subdomain index. - - See also - -------- - MultiGroupXS.get_subdomain_indices(), MultiGroupXS.set_subdomain_index() - - """ - - if indices != 'all': - cv.check_type('offsets', indices, Iterable, Integral) - - if indices == 'all' and self.domain_type != 'distribcell': - subdomains = [self.domain.id] - elif indices == 'all' and self.domain_type == 'distribcell': - tally = self.tallies.values()[0] - domain_filter = tally.find_filter(self.domain_type) - num_subdomains = domain_filter.num_bins - subdomains = np.arange(num_subdomains) - else: - subdomains = np.zeros(len(indices), dtype=np.int64) - keys = self.subdomain_indices.keys() - values = self.subdomain_indices.values() - - for i, index in enumerate(indices): - if index in values: - subdomains[i] = keys[values.index(index)] - else: - msg = 'Unable to get subdomain for index "{0}" since it ' \ - 'is not a valid index'.format(index) - raise ValueError(msg) - - return subdomains - @abc.abstractmethod def create_tallies(self, scores, all_filters, keys, estimator): """Instantiates tallies needed to compute the multi-group cross-section. @@ -532,21 +383,26 @@ class MultiGroupXS(object): raise ValueError(msg) # Construct a collection of the subdomain filter bins to average across - subdomain_indices = self.get_subdomain_indices(subdomains) + if subdomains == 'all': + if self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains) + else: + subdomains = [self.domain.id] + else: + cv.check_iterable_type('subdomains', subdomains, Integral) # Clone this MultiGroupXS to initialize the condensed version avg_xs = copy.deepcopy(self) # Reset subdomain indices and offsets for distribcell domains if self.domain_type == 'distribcell': - avg_xs._subdomain_indices = {} avg_xs._offset = 0 # Overwrite tallies with new subdomain-averaged versions avg_xs._tallies = {} for tally_type, tally in self.tallies.items(): tally_sum = tally.summation(filter=self.domain_type, - filter_bins=subdomain_indices) + filter_bins=subdomains) tally_sum /= len(subdomains) avg_xs.tallies[tally_type] = tally_sum @@ -577,7 +433,10 @@ class MultiGroupXS(object): # Append cross-section data if it has been computed if self.xs_tally is not None: if subdomains == 'all': - subdomains = self.get_subdomains() + if self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + else: + subdomains = [self.domain.id] # Loop over all subdomains for subdomain in subdomains: @@ -682,7 +541,6 @@ class MultiGroupXS(object): self._tallies = xs_results['tallies'] self._xs_tally = xs_results['xs_tally'] self._offset = xs_results['offset'] - self._subdomain_indices = xs_results['subdomain_indices'] def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True, key=None): @@ -1256,7 +1114,10 @@ class ScatterMatrixXS(MultiGroupXS): string += template.format('', group, bounds[0], bounds[1]) if subdomains == 'all': - subdomains = self.get_subdomains() + if self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + else: + subdomains = [self.domain.id] # Loop over all subdomains for subdomain in subdomains: From 2ad9ac99325afcd4021d605dbbb173f7fbba28a4 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 17:14:29 -0400 Subject: [PATCH 029/130] HDF5 stores now working for MultiGroupXS in Python API --- openmc/filter.py | 2 +- openmc/mgxs/mgxs.py | 119 ++++++++++++++++++++++++++++++++++---------- openmc/tallies.py | 4 +- 3 files changed, 95 insertions(+), 30 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index 10a245d75..85f1ee5bc 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -511,7 +511,7 @@ class Filter(object): try: import pandas as pd except ImportError: - msg = 'The pandas Python package must be installed on your system' + msg = 'The Pandas Python package must be installed on your system' raise ImportError(msg) # Initialize Pandas DataFrame diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d655472ed..e2ec26859 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -542,20 +542,99 @@ class MultiGroupXS(object): self._xs_tally = xs_results['xs_tally'] self._offset = xs_results['offset'] - def build_hdf5_store(self, filename='mgxs', directory='mgxs', - append=True, key=None): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True): + """Export the multi-group cross-section data into an HDF5 binary file. + + This routine constructs an HDF5 file which stores the multi-group + cross-section data. The data is be stored in a hierarchy of HDF5 groups + from the domain type, domain id, subdomain id (for distribcell domains), + and cross-section type. Two datasets for the mean and standard deviation + are stored for each subddomain entry in the HDF5 file. + + NOTE: This requires the h5py Python package. + + Parameters + ---------- + filename : str + Filename for the HDF5 file (default is 'mgxs') + + directory : str + Directory for the HDF5 file (default is 'mgxs') + + append : boolean + If true, appends to an existing HDF5 file with the same filename + directory (if one exists) + + Raises + ------ + ValueError + When this method is called before the multi-group cross-section is + computed from tally data. + ImportError + When h5py is not installed. + """ - :param filename: - :param directory: - :param append: - :param key: - :return: - """ + if self.xs_tally is None: + msg = 'Unable to get build HDF5 store since the ' \ + 'cross-section has not been computed' + raise ValueError(msg) - # FIXME: - import h5py - raise NotImplementedError('HDF5 storage is not yet implemented') + # Attempt to import h5py + try: + import h5py + except ImportError: + msg = 'The h5py Python package must be installed on your system' + raise ImportError(msg) + + filename = directory + '/' + filename + '.h5' + filename = filename.replace(' ', '-') + + if append: + xs_results = h5py.File(filename, 'a') + else: + xs_results = h5py.File(filename, 'w') + + # Create an HDF5 group within the file for the domain + domain_type_group = xs_results.require_group(self.domain_type) + group_name = '{0} {1}'.format(self.domain_type, self.domain.id) + domain_group = domain_type_group.require_group(group_name) + + if self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + else: + subdomains = [self.domain.id] + + # Determine number of digits to pad subdomain group keys + num_digits = len(str(self.num_subdomains)) + + # Create a separate HDF5 dataset for each subdomain + for i, subdomain in enumerate(subdomains): + + # Create an HDF5 group for the subdomain + if self.domain_type == 'distribcell': + group_name = str(subdomain).zfill(num_digits) + subdomain_group = domain_group.require_group(group_name) + else: + subdomain_group = domain_group + + # Create a separate HDF5 group for the xs type + xs_group = subdomain_group.require_group(self.xs_type) + + # Extract the cross-section for this + average = self.get_xs(subdomains=[subdomain], value='mean') + std_dev = self.get_xs(subdomains=[subdomain], value='std_dev') + average = average.squeeze() + std_dev = std_dev.squeeze() + + # Add MultiGroupXS results data to the HDF5 group + xs_group.require_dataset('average', dtype=np.float64, + shape=average.shape, data=average) + xs_group.require_dataset('std. dev.', dtype=np.float64, + shape=std_dev.shape, data=std_dev) + + # Close the MultiGroup results HDF5 file + xs_results.close() def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv'): """Export the multi-group cross-section data to a file. @@ -1082,6 +1161,7 @@ class ScatterMatrixXS(MultiGroupXS): # Query the multi-group cross-section tally for the data xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) + xs = np.nan_to_num(xs) return xs def print_xs(self, subdomains='all'): @@ -1217,17 +1297,7 @@ class Chi(MultiGroupXS): nu_fission_in = self.tallies['nu-fission-in'] nu_fission_out = self.tallies['nu-fission-out'] - # FIXME: Make filter bins simpler in Tally.summation(...) - # Construct energy group filter bins to sum across - ''' - filter_bins = [] - for group in range(1, self.num_groups+1): - group_bounds = self.energy_groups.get_group_bounds(group) - filter_bins.append((group_bounds,)) - energy_bins = [filter_bins] - ''' - energy_bins = [] for group in range(1, self.num_groups+1): energy_bins.append(self.energy_groups.get_group_bounds(group)) @@ -1235,9 +1305,6 @@ class Chi(MultiGroupXS): sum_nu_fission_in = nu_fission_in.summation(filter='energy', filter_bins=energy_bins) - # FIXME: Need ability to override energy groups with group numbers - # FIXME: Reverse from fast to thermal with energy groups - # FIXME: CrossFilter for energy + energy messes up tally arithmetic sum_nu_fission_in.remove_filter(sum_nu_fission_in.filters[-1]) @@ -1256,6 +1323,4 @@ class Chi(MultiGroupXS): self._xs_tally /= norm self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) - - # FIXME: Does this need to reset NaNs to zero? \ No newline at end of file + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) \ No newline at end of file diff --git a/openmc/tallies.py b/openmc/tallies.py index bccfd2eb5..8e5292d29 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1075,11 +1075,11 @@ class Tally(object): 'Summary info'.format(self.id) raise KeyError(msg) - # Attempt to import the pandas package + # Attempt to import Pandas try: import pandas as pd except ImportError: - msg = 'The pandas Python package must be installed on your system' + msg = 'The Pandas Python package must be installed on your system' raise ImportError(msg) # Initialize a pandas dataframe for the tally data From 4657823ade25e51b97d36ce2463b04ada4a64584 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 17:24:09 -0400 Subject: [PATCH 030/130] Added abstract compute_xs method to MultiGroupXS class in Python API --- openmc/mgxs/mgxs.py | 45 ++++++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e2ec26859..f8fd5518d 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -70,13 +70,11 @@ class MultiGroupXS(object): xs_tally : Tally Derived tally for the multi-group cross-section. This attribute is None unless the multi-group cross-section has been computed. - offset : Integral - The filter offset for the domain filter """ # This is an abstract class which cannot be instantiated - metaclass__ = abc.ABCMeta + __metaclass__ = abc.ABCMeta def __init__(self, domain=None, domain_type=None, energy_groups=None, name=''): @@ -89,7 +87,6 @@ class MultiGroupXS(object): self._num_groups = None self._tallies = dict() self._xs_tally = None - self._offset = None self.name = name if domain_type is not None: @@ -112,7 +109,6 @@ class MultiGroupXS(object): clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._num_groups = self.num_groups clone._xs_tally = copy.deepcopy(self.xs_tally, memo) - clone._offset = copy.deepcopy(self.offset, memo) clone._tallies = dict() for tally_type, tally in self.tallies.items(): @@ -158,10 +154,6 @@ class MultiGroupXS(object): def xs_tally(self): return self._xs_tally - @property - def offset(self): - return self._offset - @property def num_subdomains(self): tally = self.tallies.values()[0] @@ -189,13 +181,6 @@ class MultiGroupXS(object): self._energy_groups = energy_groups self._num_groups = energy_groups.num_groups - def _find_domain_offset(self): - """Finds and stores the offset of the domain tally filter""" - - tally = self.tallies.values()[0] - domain_filter = tally.find_filter(self.domain_type) - self._offset = domain_filter.offset - @abc.abstractmethod def create_tallies(self, scores, all_filters, keys, estimator): """Instantiates tallies needed to compute the multi-group cross-section. @@ -239,6 +224,12 @@ class MultiGroupXS(object): for filter in filters: self.tallies[key].add_filter(filter) + @abc.abstractmethod + def compute_xs(self): + """Computes multi-group cross-sections using OpenMC tally arithmetic.""" + + return + def load_from_statepoint(self, statepoint): """Extracts tallies in an OpenMC StatePoint with the data needed to compute multi-group cross-sections. @@ -814,7 +805,7 @@ class TotalXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group total cross-sections using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['total'] / self.tallies['flux'] self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) @@ -851,7 +842,7 @@ class TransportXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group transport cross-sections using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] @@ -883,7 +874,7 @@ class AbsorptionXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group absorption cross-sections using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['absorption'] / self.tallies['flux'] self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) @@ -914,7 +905,7 @@ class CaptureXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group capture cross-sections using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['absorption'] - self.tallies['fission'] self._xs_tally /= self.tallies['flux'] @@ -946,7 +937,7 @@ class FissionXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group fission cross-sections using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['fission'] / self.tallies['flux'] self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) @@ -977,7 +968,7 @@ class NuFissionXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group nu-fission cross-sections using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) @@ -1008,7 +999,7 @@ class ScatterXS(MultiGroupXS): def compute_xs(self): """Computes the scattering multi-group cross-sections using - OpenMC tally arithmetic""" + OpenMC tally arithmetic.""" self._xs_tally = self.tallies['scatter'] / self.tallies['flux'] self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) @@ -1039,7 +1030,7 @@ class NuScatterXS(MultiGroupXS): def compute_xs(self): """Computes the nu-scattering multi-group cross-section using OpenMC - tally arithmetic""" + tally arithmetic.""" self._xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) @@ -1075,7 +1066,7 @@ class ScatterMatrixXS(MultiGroupXS): def compute_xs(self, correction='None'): """Computes the multi-group scattering matrix using OpenMC - tally arithmetic""" + tally arithmetic.""" # If using P0 correction subtract scatter-P1 from the diagonal if correction == 'P0': @@ -1251,7 +1242,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): def compute_xs(self, correction='None'): """Computes the multi-group nu-scattering matrix using OpenMC - tally arithmetic""" + tally arithmetic.""" # If using P0 correction subtract scatter-P1 from the diagonal if correction == 'P0': @@ -1292,7 +1283,7 @@ class Chi(MultiGroupXS): super(Chi, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes chi fission spectrum using OpenMC tally arithmetic""" + """Computes chi fission spectrum using OpenMC tally arithmetic.""" nu_fission_in = self.tallies['nu-fission-in'] nu_fission_out = self.tallies['nu-fission-out'] From ec497c526a371f954ba9bfd7eb7e111ed89527e9 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 17:29:17 -0400 Subject: [PATCH 031/130] Improved docstrings for MultiGroupXS --- openmc/mgxs/mgxs.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f8fd5518d..a71da8cf1 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1043,7 +1043,7 @@ class ScatterMatrixXS(MultiGroupXS): super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, name) self._xs_type = 'scatter matrix' - def create_tallies(self, correct=False): + def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross-section.""" group_edges = self.energy_groups.group_edges @@ -1051,12 +1051,8 @@ class ScatterMatrixXS(MultiGroupXS): energyout = openmc.Filter('energyout', group_edges) # Create a list of scores for each Tally to be created - if correct: - scores = ['flux', 'scatter', 'scatter-P1'] - filters = [[energy], [energy, energyout], [energyout]] - else: - scores = ['flux', 'scatter'] - filters = [[energy], [energy, energyout]] + scores = ['flux', 'scatter', 'scatter-P1'] + filters = [[energy], [energy, energyout], [energyout]] estimator = 'analog' keys = scores @@ -1066,7 +1062,15 @@ class ScatterMatrixXS(MultiGroupXS): def compute_xs(self, correction='None'): """Computes the multi-group scattering matrix using OpenMC - tally arithmetic.""" + tally arithmetic. + + Parameters + ---------- + correction : {'P0' or None} + If 'P0', applies the P0 transport correction to the diagonal of the + scattering matrix. + + """ # If using P0 correction subtract scatter-P1 from the diagonal if correction == 'P0': @@ -1242,7 +1246,15 @@ class NuScatterMatrixXS(ScatterMatrixXS): def compute_xs(self, correction='None'): """Computes the multi-group nu-scattering matrix using OpenMC - tally arithmetic.""" + tally arithmetic. + + Parameters + ---------- + correction : {'P0' or None} + If 'P0', applies the P0 transport correction to the diagonal of the + scattering matrix + + """ # If using P0 correction subtract scatter-P1 from the diagonal if correction == 'P0': From e40716a49bb015db33135f8fe56eb633958bf9d7 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 20:16:07 -0400 Subject: [PATCH 032/130] Began cleanup of Tally.summation(...) routine in Python API --- openmc/mgxs/mgxs.py | 6 ++--- openmc/tallies.py | 63 +++++++-------------------------------------- 2 files changed, 12 insertions(+), 57 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index a71da8cf1..590392ae8 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -392,7 +392,7 @@ class MultiGroupXS(object): # Overwrite tallies with new subdomain-averaged versions avg_xs._tallies = {} for tally_type, tally in self.tallies.items(): - tally_sum = tally.summation(filter=self.domain_type, + tally_sum = tally.summation(filter_type=self.domain_type, filter_bins=subdomains) tally_sum /= len(subdomains) avg_xs.tallies[tally_type] = tally_sum @@ -1305,7 +1305,7 @@ class Chi(MultiGroupXS): for group in range(1, self.num_groups+1): energy_bins.append(self.energy_groups.get_group_bounds(group)) - sum_nu_fission_in = nu_fission_in.summation(filter='energy', + sum_nu_fission_in = nu_fission_in.summation(filter_type='energy', filter_bins=energy_bins) # FIXME: CrossFilter for energy + energy messes up tally arithmetic @@ -1314,7 +1314,7 @@ class Chi(MultiGroupXS): self._xs_tally = nu_fission_out / sum_nu_fission_in # Normalize chi to 1.0 - norm = self.xs_tally.summation(filter='energyout', + norm = self.xs_tally.summation(filter_type='energyout', filter_bins=energy_bins) # FIXME: CrossFilter for energy + energy messes up tally arithmetic diff --git a/openmc/tallies.py b/openmc/tallies.py index 8e5292d29..28dc451f5 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1405,35 +1405,11 @@ class Tally(object): match_filters = self.filters[:match] cross_filters = [self.filters[match:], other.filters[match:]] - ''' - # FIXME: - self_filters = set(self.filters) - other_filters = set(other.filters) - diff1 = list(self_filters.difference(other_filters)) - diff2 = list(other_filters.difference(self_filters)) - symm_diff = list(other_filters.symmetric_difference(self_filters)) - ''' - # FIXME: This must be the common longest sequence of tallies at the beginning for filter in match_filters: new_tally.add_filter(filter) - ''' - # - if len(self_filters) == 0: - for filter in self.filters: - new_tally.add_filter(filter) - for filter in self_filters: - new_tally.add_filter(filter) - # - elif len(diff2) == 0: - for filter in other.filters: - new_tally.add_filter(filter) - for filter in diff2: - new_tally.add_filter(filter) - ''' - if len(self.filters) != match and len(other.filters) == match: for filter in cross_filters[0]: new_tally.add_filter(filter) @@ -1445,19 +1421,6 @@ class Tally(object): new_filter = CrossFilter(self_filter, other_filter, binary_op) new_tally.add_filter(new_filter) - # -# else: -# all_filters = list(set([self.filters, other.filters] - ''' - if len(symm_diff) <= 1: - for filter in symm_diff: - new_tally.add_filter(filter) - else: - for self_filter, other_filter in itertools.product(*symm_diff): - new_filter = CrossFilter(self_filter, other_filter, binary_op) - new_tally.add_filter(new_filter) - ''' - # Generate score "outer products" if self.scores == other.scores: new_tally.num_score_bins = self.num_score_bins @@ -2294,7 +2257,8 @@ class Tally(object): return new_tally - def summation(self, scores=[], filter=None, filter_bins=[], nuclides=[]): + def summation(self, scores=[], filter_type=None, + filter_bins=[], nuclides=[]): """Build a sliced tally for the specified filter bins, nuclides, scores. This method constructs a new tally to encapsulate a subset of the data @@ -2308,7 +2272,7 @@ class Tally(object): A list of one or more score strings to sum across (e.g., ['absorption', 'nu-fission']; default is []) - filter : str + filter_type : str A filter type string (e.g., 'cell', 'energy') corresponding to the filter bins to sum across @@ -2348,19 +2312,13 @@ class Tally(object): nuclides = [[nuclide] for nuclide in nuclides] # Sum across any filter bins specified by the user - if filter in FILTER_TYPES.values(): + if filter_type in FILTER_TYPES.values(): filter_bins = [[(filter_bin,)] for filter_bin in filter_bins] - filters = [[filter]] + filters = [[filter_type]] # If user did not specify a filter type, do not sum across filter bins else: filter_bins = [[]] filters = [[]] - ''' - else: -# filter_bins = list(itertools.product(*filter_bins)) - filter_bins = [[filter_bin] for filter_bin in filter_bins] - filters = [[filter]] - ''' # Initialize Tally sum tally_sum = 0 @@ -2372,10 +2330,10 @@ class Tally(object): tally_slice = self.get_slice(scores, filters, filter_bins, nuclides) # Remove filters summed across to avoid bulky CrossFilters - for filter in reversed(tally_slice.filters): - if filter.type in filters: - tally_slice.remove_filter(filter) - summed_filters[filter.type].append(filter) + if filter_type: + filter = tally_slice.find_filter(filter_type) + tally_slice.remove_filter(filter) + summed_filters[filter_type].append(filter) # Accumulate this Tally slice into the Tally sum tally_sum += tally_slice @@ -2387,9 +2345,6 @@ class Tally(object): filters[i] = CrossFilter(filters[i-1], filters[i], '+') tally_sum.add_filter(filters[-1]) -# for filter in removed_filters: -# tally_sum.add_filter(filter) - return tally_sum def tile_filter(self, new_filter): From 053c1d31a8e84257c9631637637a3e389d326419 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 21 Sep 2015 21:17:18 -0400 Subject: [PATCH 033/130] Multi-group Chi is now working with bug fixes to StatePoint.get_tally(...) --- openmc/mgxs/mgxs.py | 30 +------------- openmc/statepoint.py | 11 +++++- openmc/tallies.py | 94 +++++++++++++++++++------------------------- 3 files changed, 51 insertions(+), 84 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 590392ae8..3d473a626 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1287,9 +1287,8 @@ class Chi(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) energyout_filter = openmc.Filter('energyout', group_edges) - filters = [[energy_filter], [energyout_filter]] + filters = [[], [energyout_filter]] # Intialize the Tallies super(Chi, self).create_tallies(scores, filters, keys, estimator) @@ -1299,31 +1298,6 @@ class Chi(MultiGroupXS): nu_fission_in = self.tallies['nu-fission-in'] nu_fission_out = self.tallies['nu-fission-out'] - - # Construct energy group filter bins to sum across - energy_bins = [] - for group in range(1, self.num_groups+1): - energy_bins.append(self.energy_groups.get_group_bounds(group)) - - sum_nu_fission_in = nu_fission_in.summation(filter_type='energy', - filter_bins=energy_bins) - - # FIXME: CrossFilter for energy + energy messes up tally arithmetic - sum_nu_fission_in.remove_filter(sum_nu_fission_in.filters[-1]) - - self._xs_tally = nu_fission_out / sum_nu_fission_in - - # Normalize chi to 1.0 - norm = self.xs_tally.summation(filter_type='energyout', - filter_bins=energy_bins) - - # FIXME: CrossFilter for energy + energy messes up tally arithmetic - norm.remove_filter(norm.filters[-1]) - - energy_filter = openmc.Filter(type='energyout') - energy_filter.bins = self.energy_groups.group_edges - norm = norm.tile_filter(energy_filter) - - self._xs_tally /= norm + self._xs_tally = nu_fission_out / nu_fission_in self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) \ No newline at end of file diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 22686e8e9..545b53a1a 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -635,8 +635,15 @@ class StatePoint(object): contains_filters = True # Iterate over the Filters requested by the user - for filter, test_filter in zip(filters, test_tally.filters): - if not test_filter.is_subset(filter): + for filter in filters: + contains_filter = False + + for test_filter in test_tally.filters: + if test_filter.is_subset(filter): + contains_filter = True + break + + if not contains_filter: contains_filters = False break diff --git a/openmc/tallies.py b/openmc/tallies.py index 28dc451f5..a62043132 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1354,26 +1354,22 @@ class Tally(object): new_tally._std_dev = np.sqrt(data['self']['std. dev.']**2 + data['other']['std. dev.']**2) elif binary_op == '-': - data = self._align_tally_data(other) new_tally._mean = data['self']['mean'] - data['other']['mean'] new_tally._std_dev = np.sqrt(data['self']['std. dev.']**2 + data['other']['std. dev.']**2) elif binary_op == '*': - data = self._align_tally_data(other) self_rel_err = data['self']['std. dev.'] / data['self']['mean'] other_rel_err = data['other']['std. dev.'] / data['other']['mean'] new_tally._mean = data['self']['mean'] * data['other']['mean'] new_tally._std_dev = np.abs(new_tally.mean) * \ np.sqrt(self_rel_err**2 + other_rel_err**2) elif binary_op == '/': - data = self._align_tally_data(other) self_rel_err = data['self']['std. dev.'] / data['self']['mean'] other_rel_err = data['other']['std. dev.'] / data['other']['mean'] new_tally._mean = data['self']['mean'] / data['other']['mean'] new_tally._std_dev = np.abs(new_tally.mean) * \ np.sqrt(self_rel_err**2 + other_rel_err**2) elif binary_op == '^': - data = self._align_tally_data(other) mean_ratio = data['other']['mean'] / data['self']['mean'] first_term = mean_ratio * data['self']['std. dev.'] second_term = \ @@ -1562,7 +1558,6 @@ class Tally(object): A dictionary of dictionaries to "aligned" 'mean' and 'std. dev' NumPy arrays for each tally's data. - """ self_mean = copy.deepcopy(self.mean) @@ -1572,44 +1567,12 @@ class Tally(object): if self.filters != other.filters: - # FIXME: Note that this makes the assumption that common filters - # are at the beginning of each Tally's list of filters - -# match = 0 -# for i, filter_pair in enumerate(zip(self.filters, other.filters)): -# self_filter, other_filter = filter_pair -# if self_filter == other_filter: -# match += 1 -# else: -# break - -# match_filters = self.filters[:match] -# cross_filters = [self.filters[match:], other.filters[match:]] -# cross_filters.extend(other.filters[match:]) - -# other_tile_factor = 1 -# self_repeat_factor = 1 - - # FIXME: If one or the other tally has not cross filters -# repeat_factor = 1 -# for self_filter, other_filter in itertools.product(*cross_filters): -# repeat_factor *= self_filter.num_bins * other_filter.num_bins - -# other_tile_factor = repeat_factor / other.num_filter_bins -# self_repeat_factor = repeat_factor / self.num_filter_bins - -# other_tile_factor = repeat_factor -# self_repeat_factor = repeat_factor - - # -# for filter in self.filters[match:]: -# other_tile_factor *= filter.num_bins - -# for filter in other.filters[match:]: -# self_repeat_factor *= filter.num_bins - + self_shape = list(self.mean.shape) + other_shape = list(other.mean.shape) # FIXME: + # Determine the number of paired combinations of filter bins + # between the two tallies and repeat arrays along filter axes diff1 = list(set(self.filters).difference(set(other.filters))) diff2 = list(set(other.filters).difference(set(self.filters))) @@ -1623,16 +1586,23 @@ class Tally(object): for filter in diff2: self_repeat_factor *= filter.num_bins - # Determine the number of paired combinations of filter bins - # between the two tallies and repeat arrays along filter axes -# self_repeat_factor = other.num_filter_bins -# other_tile_factor = self.num_filter_bins - # Replicate the data - self_mean = np.repeat(self_mean, self_repeat_factor, axis=0) - other_mean = np.tile(other_mean, (other_tile_factor, 1, 1)) - self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=0) - other_std_dev = np.tile(other_std_dev, (other_tile_factor, 1, 1)) + self_shape[0] *= self_repeat_factor + self_mean = np.repeat(self_mean, self_repeat_factor) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor) + + if self_repeat_factor == 1: + other_shape[0] *= other_tile_factor + other_mean = np.repeat(other_mean, other_tile_factor) + other_std_dev = np.repeat(other_std_dev, other_tile_factor) + else: + other_mean = np.tile(other_mean, (other_tile_factor, 1, 1)) + other_std_dev = np.tile(other_std_dev, (other_tile_factor, 1, 1)) + + self_mean.shape = tuple(self_shape) + self_std_dev.shape = tuple(self_shape) + other_mean.shape = tuple(other_shape) + other_std_dev.shape = tuple(other_shape) if self.nuclides != other.nuclides: @@ -1641,12 +1611,20 @@ class Tally(object): self_repeat_factor = other.num_nuclides other_tile_factor = self.num_nuclides + self_shape = list(self.mean.shape) + # Replicate the data - self_mean = np.repeat(self_mean, self_repeat_factor, axis=1) + self_mean = np.repeat(self_mean, self_repeat_factor) +# self_mean = np.repeat(self_mean, self_repeat_factor, axis=1) other_mean = np.tile(other_mean, (1, other_tile_factor, 1)) - self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1) +# self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor) other_std_dev = np.tile(other_std_dev, (1, other_tile_factor, 1)) + self_shape[1] *= self_repeat_factor + self_mean.shape = tuple(self_shape) + self_std_dev.shape = tuple(self_shape) + if self.scores != other.scores: # Determine the number of paired combinations of score bins @@ -1654,12 +1632,20 @@ class Tally(object): self_repeat_factor = other.num_score_bins other_tile_factor = self.num_score_bins + self_shape = list(self.mean.shape) + # Replicate the data - self_mean = np.repeat(self_mean, self_repeat_factor, axis=2) + self_mean = np.repeat(self_mean, self_repeat_factor) +# self_mean = np.repeat(self_mean, self_repeat_factor, axis=2) other_mean = np.tile(other_mean, (1, 1, other_tile_factor)) - self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor) +# self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2) other_std_dev = np.tile(other_std_dev, (1, 1, other_tile_factor)) + self_shape[2] *= self_repeat_factor + self_mean.shape = tuple(self_shape) + self_std_dev.shape = tuple(self_shape) + data = {} data['self'] = {} data['other'] = {} From ffea752c5d9de3cb3571b17c0f6a58a03933c7f2 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 24 Sep 2015 15:20:51 -0400 Subject: [PATCH 034/130] Fixed bug in openmc.mgxs for appending data to HDF5 files --- openmc/mgxs/mgxs.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 3d473a626..d7d6af807 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -578,10 +578,14 @@ class MultiGroupXS(object): msg = 'The h5py Python package must be installed on your system' raise ImportError(msg) + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + filename = directory + '/' + filename + '.h5' filename = filename.replace(' ', '-') - if append: + if append and os.path.isfile(filename): xs_results = h5py.File(filename, 'a') else: xs_results = h5py.File(filename, 'w') From 4bf7fe5104b34af559fbd465ae0ef51c176462c1 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 12:18:03 -0400 Subject: [PATCH 035/130] Fixed issue in Filter.is_subset(...) routine for energy filter types --- openmc/filter.py | 2 ++ openmc/mgxs/mgxs.py | 15 +++++++++------ openmc/statepoint.py | 11 +++++------ 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index fdeebaf8a..5c97fb9e3 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -322,6 +322,8 @@ class Filter(object): return False elif self.type != other.type: return False + elif self.type in ['energy', 'energyout']: + return np.all(self.bins == other.bins) for bin in other.bins: if bin not in self.bins: diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 332eb7190..98248dc87 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -840,6 +840,7 @@ class TransportXS(MultiGroupXS): super(TransportXS, self).load_from_statepoint(statepoint) scatter_p1 = self.tallies['scatter-P1'] self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) + self.tallies['scatter-P1'].filters[-1].type = 'energy' def compute_xs(self): """Computes the multi-group transport cross-sections using OpenMC @@ -1061,7 +1062,7 @@ class ScatterMatrixXS(MultiGroupXS): # Initialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correction='None'): + def compute_xs(self, correction='P0'): """Computes the multi-group scattering matrix using OpenMC tally arithmetic. @@ -1075,7 +1076,7 @@ class ScatterMatrixXS(MultiGroupXS): # If using P0 correction subtract scatter-P1 from the diagonal if correction == 'P0': - scatter_p1 = self.tallies['scatter-1'] + scatter_p1 = self.tallies['scatter-P1'] scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges @@ -1245,7 +1246,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): # Intialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correction='None'): + def compute_xs(self, correction='P0'): """Computes the multi-group nu-scattering matrix using OpenMC tally arithmetic. @@ -1259,7 +1260,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): # If using P0 correction subtract scatter-P1 from the diagonal if correction == 'P0': - scatter_p1 = self.tallies['scatter-1'] + scatter_p1 = self.tallies['scatter-P1'] scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') energy_filter.bins = self.energy_groups.group_edges @@ -1288,8 +1289,9 @@ class Chi(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges - energyout_filter = openmc.Filter('energyout', group_edges) - filters = [[], [energyout_filter]] + energyout_filter1 = openmc.Filter('energyout', group_edges) + energyout_filter2 = openmc.Filter('energyout', [group_edges[0], group_edges[-1]]) + filters = [[energyout_filter2], [energyout_filter1]] # Intialize the Tallies super(Chi, self).create_tallies(scores, filters, keys, estimator) @@ -1299,6 +1301,7 @@ class Chi(MultiGroupXS): nu_fission_in = self.tallies['nu-fission-in'] nu_fission_out = self.tallies['nu-fission-out'] + nu_fission_in.remove_filter(nu_fission_in.filters[-1]) self._xs_tally = nu_fission_out / nu_fission_in self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 34ed09ad4..f90e429cc 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -466,7 +466,7 @@ class StatePoint(object): """Finds and returns a Tally object with certain properties. This routine searches the list of Tallies and returns the first Tally - found it finds which satisfies all of the input parameters. + found which satisfies all of the input parameters. NOTE: The input parameters do not need to match the complete Tally specification and may only represent a subset of the Tally's properties. @@ -534,15 +534,14 @@ class StatePoint(object): # Iterate over the Filters requested by the user for filter in filters: - contains_filter = False + contains_filters = False for test_filter in test_tally.filters: - if test_filter.is_subset(filter): - contains_filter = True + if filter.is_subset(test_filter): + contains_filters = True break - if not contains_filter: - contains_filters = False + if not contains_filters: break if not contains_filters: From 8ebaf9cb2447a2bdc797f107ecf11591c5e26b82 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 14:02:53 -0400 Subject: [PATCH 036/130] The Python APIs multi-group cross-section condensation is now working except for transfer matrice --- openmc/mgxs/mgxs.py | 59 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 98248dc87..eadcbda88 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -341,7 +341,59 @@ class MultiGroupXS(object): """ - raise NotImplementedError('Energy condensation is not yet implemented') + if self.xs_tally is None: + msg = 'Unable to get a condensed coarse group cross-section ' \ + 'since the fine group cross-section has not been computed' + raise ValueError(msg) + + cv.check_type('coarse_groups', coarse_groups, EnergyGroups) + cv.check_less_than('coarse groups', coarse_groups.num_groups, self.num_groups) + cv.check_value('upper coarse energy', coarse_groups.group_edges[-1], + [self.energy_groups.group_edges[-1]]) + cv.check_value('lower coarse energy', coarse_groups.group_edges[0], + [self.energy_groups.group_edges[0]]) + + # Clone this MultiGroupXS to initialize the condensed version + condensed_xs = copy.deepcopy(self) + condensed_xs.energy_groups = coarse_groups + + # Build indices to sum up over + energy_indices = [] + for group in range(coarse_groups.num_groups, 0, -1): + low, high = coarse_groups.get_group_bounds(group) + low_index = np.where(self.energy_groups.group_edges == low)[0][0] + energy_indices.append(low_index) + + # FIXME: This won't work for scattering matrices + # Overwrite tallies with new energy-condensed versions + # NOTE: This assumes that the tallies were loaded such with a single + # domain filter and energy filter in that order + for tally_type, tally in condensed_xs.tallies.items(): + + try: + # Find the tally's energy filter and update to coarse groups + energy_filter = tally.find_filter('energy') + energy_filter.bins = coarse_groups.group_edges + + # Make the condensed tally derived and ull out sum, sum_sq + tally._derived = True + tally._sum = None + tally._sum_sq = None + + # Sum up mean, std. dev fine groups within each coarse group + tally._mean = np.add.reduceat(tally.mean, energy_indices) + tally._std_dev = tally.std_dev**2 + tally._std_dev = np.add.reduceat(tally.std_dev, energy_indices) + tally._std_dev = np.sqrt(tally.std_dev) + + # If the tally had no energy filter, then pass + except ValueError: + pass + + # Compute the energy condensed multi-group cross-section + condensed_xs.compute_xs() + + return condensed_xs def get_subdomain_avg_xs(self, subdomains='all'): """Construct a subdomain-averaged version of this cross-section. @@ -367,7 +419,8 @@ class MultiGroupXS(object): """ if self.xs_tally is None: - msg = 'Unable to get cross-section since it has not been computed' + msg = 'Unable to get subdomain-averaged cross-section since the ' \ + 'subdomain-distributed cross-section has not been computed' raise ValueError(msg) # Construct a collection of the subdomain filter bins to average across @@ -394,7 +447,7 @@ class MultiGroupXS(object): tally_sum /= len(subdomains) avg_xs.tallies[tally_type] = tally_sum - # Compute the condensed single group cross-section + # Compute the subdomain-averaged multi-group cross-section avg_xs.compute_xs() return avg_xs From d0a85cd0825938417f3b42c3160e0c3fdc6c1bbe Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 16:06:42 -0400 Subject: [PATCH 037/130] Python API group condensation now working for multi-group scattering matrices --- openmc/filter.py | 2 +- openmc/mgxs/mgxs.py | 63 ++++++++++++++++++++++++--------------------- openmc/tallies.py | 46 +++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 30 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index 5c97fb9e3..f74024724 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -118,7 +118,7 @@ class Filter(object): if self.bins is None: return 0 elif self.type in ['energy', 'energyout']: - return len(self.bins)-1 + return len(self.bins) - 1 elif self.type in ['cell', 'cellborn', 'surface', 'universe', 'material']: return len(self.bins) else: diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index eadcbda88..a0e52ab5f 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -364,35 +364,40 @@ class MultiGroupXS(object): low_index = np.where(self.energy_groups.group_edges == low)[0][0] energy_indices.append(low_index) - # FIXME: This won't work for scattering matrices - # Overwrite tallies with new energy-condensed versions - # NOTE: This assumes that the tallies were loaded such with a single - # domain filter and energy filter in that order + 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(): - try: - # Find the tally's energy filter and update to coarse groups - energy_filter = tally.find_filter('energy') - energy_filter.bins = coarse_groups.group_edges + # Make condensed tally derived and null out sum, sum_sq + tally._derived = True + tally._sum = None + tally._sum_sq = None - # Make the condensed tally derived and ull out sum, sum_sq - tally._derived = True - tally._sum = None - tally._sum_sq = None + # Get tally data arrays reshaped with one dimension per filter + mean = tally.get_reshaped_data(value='mean') + std_dev = tally.get_reshaped_data(value='std_dev') - # Sum up mean, std. dev fine groups within each coarse group - tally._mean = np.add.reduceat(tally.mean, energy_indices) - tally._std_dev = tally.std_dev**2 - tally._std_dev = np.add.reduceat(tally.std_dev, energy_indices) - tally._std_dev = np.sqrt(tally.std_dev) + # Sum across all applicable fine energy group filters + for i, filter in enumerate(tally.filters): + if 'energy' in filter.type and all(filter.bins == fine_edges): + filter.bins = coarse_groups.group_edges + mean = np.add.reduceat(mean, energy_indices, axis=i) + std_dev = np.add.reduceat(std_dev**2, energy_indices, axis=i) + std_dev = np.sqrt(std_dev) - # If the tally had no energy filter, then pass - except ValueError: - pass + # Reshape condensed data arrays with one dimension for all filters + new_shape = \ + (tally.num_filter_bins, tally.num_nuclides, tally.num_score_bins,) + mean = np.reshape(mean, new_shape) + std_dev = np.reshape(std_dev, new_shape) + + # Override tally's data with the new condensed data + tally._mean = mean + tally._std_dev = std_dev # Compute the energy condensed multi-group cross-section condensed_xs.compute_xs() - return condensed_xs def get_subdomain_avg_xs(self, subdomains='all'): @@ -432,7 +437,7 @@ class MultiGroupXS(object): else: cv.check_iterable_type('subdomains', subdomains, Integral) - # Clone this MultiGroupXS to initialize the condensed version + # Clone this MultiGroupXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) # Reset subdomain indices and offsets for distribcell domains @@ -1115,7 +1120,7 @@ class ScatterMatrixXS(MultiGroupXS): # Initialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correction='P0'): + def compute_xs(self, correction=None): """Computes the multi-group scattering matrix using OpenMC tally arithmetic. @@ -1146,8 +1151,8 @@ class ScatterMatrixXS(MultiGroupXS): subdomains='all', value='mean'): """Returns an array of multi-group cross-sections. - This method constructs a 2D NumPy array for the requested multi-group - cross-section data data for one or more energy groups and subdomains. + This method constructs a 2D NumPy array for the requested scattering + matrix data data for one or more energy groups and subdomains. Parameters ---------- @@ -1299,7 +1304,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): # Intialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correction='P0'): + def compute_xs(self, correction=None): """Computes the multi-group nu-scattering matrix using OpenMC tally arithmetic. @@ -1342,9 +1347,9 @@ class Chi(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges - energyout_filter1 = openmc.Filter('energyout', group_edges) - energyout_filter2 = openmc.Filter('energyout', [group_edges[0], group_edges[-1]]) - filters = [[energyout_filter2], [energyout_filter1]] + fine_energyout = openmc.Filter('energyout', group_edges) + coarse_energyout = openmc.Filter('energyout', [group_edges[0], group_edges[-1]]) + filters = [[coarse_energyout], [fine_energyout]] # Intialize the Tallies super(Chi, self).create_tallies(scores, filters, keys, estimator) diff --git a/openmc/tallies.py b/openmc/tallies.py index 3a2f77679..785fdb9dd 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1174,6 +1174,52 @@ class Tally(object): return df + def get_reshaped_data(self, value='mean'): + """Returns an array of tally data with one dimension per filter. + + The tally data in OpenMC is stored as a 3D array with the dimensions + corresponding to filters, nuclides and scores. As a result, tally data + can be opaque for a user to directly index (i.e., without use of the + Tally.get_values(...) routine) since one must know how to properly use + the number of bins and strides for each filter to index into the first + (filter) dimension. + + This builds and returns a reshaped version of the tally data array with + unique dimensions corresponding to each tally filter. For example, + suppose this tally has arrays of data with shape (8,5,5) corresponding + to two filters (2 and 4 bins, respectively), five nuclides and five + scores. This routine will return a version of the data array with the + with a new shape of (2,4,5,5) such that the first two dimensions now + correspond directly to the two filters with two and four bins. + + Parameters + --------- + value : str + A string for the type of value to return - 'mean' (default), + 'std_dev', 'rel_err', 'sum', or 'sum_sq' are accepted + + Returns + ------- + float or ndarray + A scalar or NumPy array of the Tally data indexed in the order + each filter, nuclide and score is listed in the parameters. + + """ + + # Get the 3D array of data in filters, nuclides and scores + data = self.get_values(value=value) + + # Build a new array shape with one dimension per filter + new_shape = () + for filter in self.filters: + new_shape += (filter.num_bins, ) + new_shape += (self.num_nuclides,) + new_shape += (self.num_score_bins,) + + # Reshape the data with one dimension for each filter + data = np.reshape(data, new_shape) + return data + def export_results(self, filename='tally-results', directory='.', format='hdf5', append=True): """Exports tallly results to an HDF5 or Python pickle binary file. From 02c30fd5de7f4c26f5e97a6f2103a4736af9a226 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 17:12:03 -0400 Subject: [PATCH 038/130] Removed Tally.summation(...) routine in place of explicit tally summations in openmc.mgxs module for subdomain averaging --- openmc/filter.py | 5 ++- openmc/mgxs/mgxs.py | 53 +++++++++++++++++++++----- openmc/tallies.py | 90 --------------------------------------------- 3 files changed, 47 insertions(+), 101 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index f74024724..b8865a184 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -318,6 +318,7 @@ class Filter(object): boolean Whether or not the other filter is a subset of this filter """ + if not isinstance(other, Filter): return False elif self.type != other.type: @@ -325,8 +326,8 @@ class Filter(object): elif self.type in ['energy', 'energyout']: return np.all(self.bins == other.bins) - for bin in other.bins: - if bin not in self.bins: + for bin in self.bins: + if bin not in other.bins: return False return True diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index a0e52ab5f..fc763592f 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -403,7 +403,9 @@ class MultiGroupXS(object): def get_subdomain_avg_xs(self, subdomains='all'): """Construct a subdomain-averaged version of this cross-section. - This is primarily useful for averaging across distribcell instances. + This is primarily useful for averaging across distribcell instances or + mesh cells. This routine performs spatial homogenization to compute the + scalar flux-weighted average cross-section across the subdomains. Parameters ---------- @@ -440,17 +442,49 @@ class MultiGroupXS(object): # Clone this MultiGroupXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) - # Reset subdomain indices and offsets for distribcell domains + # If domain is distribcell, make subdomain-averaged a 'cell' domain if self.domain_type == 'distribcell': + avg_xs.domain_type = 'cell' avg_xs._offset = 0 + # TODO: Implement this for mesh tallies + elif self.domain_type == 'mesh': + raise NotImplementedError('Average mesh xs are not yet implemented') - # Overwrite tallies with new subdomain-averaged versions - avg_xs._tallies = {} - for tally_type, tally in self.tallies.items(): - tally_sum = tally.summation(filter_type=self.domain_type, - filter_bins=subdomains) - tally_sum /= len(subdomains) - avg_xs.tallies[tally_type] = tally_sum + # Average each of the tallies across subdomains + for tally_type, tally in avg_xs.tallies.items(): + + # Make condensed tally derived and null out sum, sum_sq + tally._derived = True + tally._sum = None + tally._sum_sq = None + + # Get tally data arrays reshaped with one dimension per filter + mean = tally.get_reshaped_data(value='mean') + std_dev = tally.get_reshaped_data(value='std_dev') + + # Get the mean of the mean, std. dev. across requested subdomains + mean = np.mean(mean[subdomains, ...], axis=0) + std_dev = np.mean(std_dev[subdomains, ...]**2, axis=0) + std_dev = np.sqrt(std_dev) + + # If domain is distribcell, make subdomain-averaged a 'cell' domain + domain_filter = tally.find_filter(self._domain_type) + if domain_filter.type == 'distribcell': + domain_filter.type = 'cell' + domain_filter.num_bins = 1 + # TODO: Implement this for mesh tallies + elif domain_filter.type == 'mesh': + raise NotImplementedError('Average mesh xs are not yet implemented') + + # Reshape averaged data arrays with one dimension for all filters + new_shape = \ + (tally.num_filter_bins, tally.num_nuclides, tally.num_score_bins,) + mean = np.reshape(mean, new_shape) + std_dev = np.reshape(std_dev, new_shape) + + # Override tally's data with the new condensed data + tally._mean = mean + tally._std_dev = std_dev # Compute the subdomain-averaged multi-group cross-section avg_xs.compute_xs() @@ -733,6 +767,7 @@ class MultiGroupXS(object): df = self.get_pandas_dataframe() # Capitalize column label strings + df.columns = df.columns.astype(str) df.columns = map(str.title, df.columns) # Export the data using Pandas IO API diff --git a/openmc/tallies.py b/openmc/tallies.py index 785fdb9dd..a5b55d810 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2316,96 +2316,6 @@ class Tally(object): return new_tally - def summation(self, scores=[], filter_type=None, - filter_bins=[], nuclides=[]): - """Build a sliced tally for the specified filter bins, nuclides, scores. - - This method constructs a new tally to encapsulate a subset of the data - represented by this tally. The subset of data to include in the tally - slice is determined by the scores, filter bins and nuclides specified - in the input parameters. - - Parameters - ---------- - scores : list - A list of one or more score strings to sum across - (e.g., ['absorption', 'nu-fission']; default is []) - - filter_type : str - A filter type string (e.g., 'cell', 'energy') corresponding to the - filter bins to sum across - - filter_bins : Iterable of Integral or tuple - A list of the filter bins corresponding to the filters parameter - Each bin in the list is the integer ID for 'material', 'surface', - 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer - for the cell instance ID for 'distribcell Filters. Each bin is a - 2-tuple of floats for 'energy' and 'energyout' filters corresponding - to the energy boundaries of the bin of interest. Each bin is an - (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of - interest. - - nuclides : list - A list of nuclide name strings to sum across - (e.g., ['U-235', 'U-238']; default is []) - - Returns - ------- - Tally - A new tally which encapsulates the sum of data requested. - - """ - - # If user did not specify any scores, do not sum across scores - if len(scores) == 0: - scores = [[]] - # Sum across any scores specified by the user - else: - scores = [[score] for score in scores] - - # If user did not specify any nuclides, do not sum across nuclides - if len(nuclides) == 0: - nuclides = [[]] - # Sum across any nuclides specified by the user - else: - nuclides = [[nuclide] for nuclide in nuclides] - - # Sum across any filter bins specified by the user - if filter_type in FILTER_TYPES.values(): - filter_bins = [[(filter_bin,)] for filter_bin in filter_bins] - filters = [[filter_type]] - # If user did not specify a filter type, do not sum across filter bins - else: - filter_bins = [[]] - filters = [[]] - - # Initialize Tally sum - tally_sum = 0 - - # Iterate over all Tally slice operands in summation - prod = [scores, filters, filter_bins, nuclides] - summed_filters = defaultdict(list) - for scores, filters, filter_bins, nuclides in itertools.product(*prod): - tally_slice = self.get_slice(scores, filters, filter_bins, nuclides) - - # Remove filters summed across to avoid bulky CrossFilters - if filter_type: - filter = tally_slice.find_filter(filter_type) - tally_slice.remove_filter(filter) - summed_filters[filter_type].append(filter) - - # Accumulate this Tally slice into the Tally sum - tally_sum += tally_slice - - # FIXME: test if this works for filter - for filter_type in summed_filters: - filters = summed_filters[filter_type] - for i in range(1, len(filters)): - filters[i] = CrossFilter(filters[i-1], filters[i], '+') - tally_sum.add_filter(filters[-1]) - - return tally_sum - def tile_filter(self, new_filter): """Combines filters, scores and nuclides with another tally. From a8ccd78ab63d349e689ec4a8427a4997e8ccd88b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 17:32:10 -0400 Subject: [PATCH 039/130] Removed stubs for mesh domains in Python API openmc.mgxs module --- openmc/mgxs/mgxs.py | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index fc763592f..3c41a4d28 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -21,14 +21,12 @@ if sys.version_info[0] >= 3: DOMAIN_TYPES = ['cell', 'distribcell', 'universe', - 'material', - 'mesh'] + 'material'] # Supported domain objects DOMAINS = [openmc.Cell, openmc.Universe, - openmc.Material, - openmc.Mesh] + openmc.Material] class MultiGroupXS(object): @@ -41,9 +39,9 @@ class MultiGroupXS(object): Parameters ---------- - domain : Material or Cell or Universe or Mesh + domain : Material or Cell or Universe The domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe' or 'mesh'} + domain_type : {'material', 'cell', 'distribcell', 'universe'} The domain type for spatial homogenization energy_groups : EnergyGroups The energy group structure for energy condensation @@ -57,9 +55,9 @@ class MultiGroupXS(object): Name of the multi-group cross-section xs_type : str Cross-section type (e.g., 'total', 'nu-fission', etc.) - domain : Material or Cell or Universe or Mesh + domain : Material or Cell or Universe Domain for spatial homogenization - domain_type : {'material', 'cell', 'distribcell', 'universe' or 'mesh'} + domain_type : {'material', 'cell', 'distribcell', 'universe'} Domain type for spatial homogenization energy_groups : EnergyGroups Energy group structure for energy condensation @@ -403,8 +401,8 @@ class MultiGroupXS(object): def get_subdomain_avg_xs(self, subdomains='all'): """Construct a subdomain-averaged version of this cross-section. - This is primarily useful for averaging across distribcell instances or - mesh cells. This routine performs spatial homogenization to compute the + This is primarily useful for averaging across distribcell instances. + This routine performs spatial homogenization to compute the scalar flux-weighted average cross-section across the subdomains. Parameters @@ -446,9 +444,6 @@ class MultiGroupXS(object): if self.domain_type == 'distribcell': avg_xs.domain_type = 'cell' avg_xs._offset = 0 - # TODO: Implement this for mesh tallies - elif self.domain_type == 'mesh': - raise NotImplementedError('Average mesh xs are not yet implemented') # Average each of the tallies across subdomains for tally_type, tally in avg_xs.tallies.items(): @@ -472,9 +467,6 @@ class MultiGroupXS(object): if domain_filter.type == 'distribcell': domain_filter.type = 'cell' domain_filter.num_bins = 1 - # TODO: Implement this for mesh tallies - elif domain_filter.type == 'mesh': - raise NotImplementedError('Average mesh xs are not yet implemented') # Reshape averaged data arrays with one dimension for all filters new_shape = \ From 4f86e8819ad2e9b5d8c38851a690518be333d7d1 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 17:41:30 -0400 Subject: [PATCH 040/130] Renamed MultiGroupXS xs_type attribute to rxn_type to allow xs_type to be used for macro vs. micro --- openmc/mgxs/mgxs.py | 190 ++++++++++++++++++++++---------------------- 1 file changed, 95 insertions(+), 95 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 3c41a4d28..25807227d 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -30,12 +30,12 @@ DOMAINS = [openmc.Cell, class MultiGroupXS(object): - """A multi-group cross-section for some energy group structure within + """A multi-group cross section for some energy group structure within some spatial domain. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated - multi-group cross-sections for deterministic neutronics calculations. + multi-group cross sections for deterministic neutronics calculations. Parameters ---------- @@ -46,15 +46,15 @@ class MultiGroupXS(object): energy_groups : EnergyGroups The energy group structure for energy condensation name : str, optional - Name of the multi-group cross-section. Used as a label to identify + Name of the multi-group cross section. Used as a label to identify tallies in OpenMC tallies.xml file. Attributes ---------- name : str, optional - Name of the multi-group cross-section - xs_type : str - Cross-section type (e.g., 'total', 'nu-fission', etc.) + Name of the multi-group cross section + rxn_type : str + Reaction type (e.g., 'total', 'nu-fission', etc.) domain : Material or Cell or Universe Domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} @@ -64,10 +64,10 @@ class MultiGroupXS(object): num_groups : Integral Number of energy groups tallies : dict - OpenMC tallies needed to compute the multi-group cross-section + OpenMC tallies needed to compute the multi-group cross section xs_tally : Tally - Derived tally for the multi-group cross-section. This attribute - is None unless the multi-group cross-section has been computed. + Derived tally for the multi-group cross section. This attribute + is None unless the multi-group cross section has been computed. """ @@ -78,7 +78,7 @@ class MultiGroupXS(object): energy_groups=None, name=''): self._name = '' - self._xs_type = None + self._rxn_type = None self._domain = None self._domain_type = None self._energy_groups = None @@ -101,7 +101,7 @@ class MultiGroupXS(object): if existing is None: clone = type(self).__new__(type(self)) clone._name = self.name - clone._xs_type = self.xs_type + clone._rxn_type = self.rxn_type clone._domain = self.domain clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) @@ -125,8 +125,8 @@ class MultiGroupXS(object): return self._name @property - def xs_type(self): - return self._xs_type + def rxn_type(self): + return self._rxn_type @property def domain(self): @@ -181,7 +181,7 @@ class MultiGroupXS(object): @abc.abstractmethod def create_tallies(self, scores, all_filters, keys, estimator): - """Instantiates tallies needed to compute the multi-group cross-section. + """Instantiates tallies needed to compute the multi-group cross section. This is a helper method for MultiGroupXS subclasses to create tallies for input file generation. The tallies are stored in the tallies dict. @@ -224,15 +224,15 @@ class MultiGroupXS(object): @abc.abstractmethod def compute_xs(self): - """Computes multi-group cross-sections using OpenMC tally arithmetic.""" + """Computes multi-group cross sections using OpenMC tally arithmetic.""" return def load_from_statepoint(self, statepoint): """Extracts tallies in an OpenMC StatePoint with the data needed to - compute multi-group cross-sections. + compute multi-group cross sections. - This method is needed to compute cross-section data from tallies + This method is needed to compute cross section data from tallies in an OpenMC StatePoint object. Parameters @@ -265,10 +265,10 @@ class MultiGroupXS(object): self.tallies[tally_type] = sp_tally def get_xs(self, groups='all', subdomains='all', value='mean'): - """Returns an array of multi-group cross-sections. + """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. + cross section data data for one or more energy groups and subdomains. Parameters ---------- @@ -285,19 +285,19 @@ class MultiGroupXS(object): Returns ------- xs : ndarray - A NumPy array of the multi-group cross-section indexed in the order + A NumPy array of the multi-group cross section indexed in the order each group and subdomain is listed in the parameters. Raises ------ ValueError - When this method is called before the multi-group cross-section is + When this method is called before the multi-group cross section is computed from tally data. """ if self.xs_tally is None: - msg = 'Unable to get cross-section since it has not been computed' + msg = 'Unable to get cross section since it has not been computed' raise ValueError(msg) cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) @@ -319,13 +319,13 @@ class MultiGroupXS(object): filters.append('energy') filter_bins.append((self.energy_groups.get_group_bounds(group),)) - # Query the multi-group cross-section tally for the data + # Query the multi-group cross section tally for the data xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) return xs def get_condensed_xs(self, coarse_groups): - """Construct an energy-condensed version of this cross-section. + """Construct an energy-condensed version of this cross section. Parameters ---------- @@ -340,8 +340,8 @@ class MultiGroupXS(object): """ if self.xs_tally is None: - msg = 'Unable to get a condensed coarse group cross-section ' \ - 'since the fine group cross-section has not been computed' + msg = 'Unable to get a condensed coarse group cross section ' \ + 'since the fine group cross section has not been computed' raise ValueError(msg) cv.check_type('coarse_groups', coarse_groups, EnergyGroups) @@ -394,16 +394,16 @@ class MultiGroupXS(object): tally._mean = mean tally._std_dev = std_dev - # Compute the energy condensed multi-group cross-section + # Compute the energy condensed multi-group cross section condensed_xs.compute_xs() return condensed_xs def get_subdomain_avg_xs(self, subdomains='all'): - """Construct a subdomain-averaged version of this cross-section. + """Construct a subdomain-averaged version of this cross section. This is primarily useful for averaging across distribcell instances. This routine performs spatial homogenization to compute the - scalar flux-weighted average cross-section across the subdomains. + scalar flux-weighted average cross section across the subdomains. Parameters ---------- @@ -418,14 +418,14 @@ class MultiGroupXS(object): Raises ------ ValueError - When this method is called before the multi-group cross-section is + When this method is called before the multi-group cross section is computed from tally data. """ if self.xs_tally is None: - msg = 'Unable to get subdomain-averaged cross-section since the ' \ - 'subdomain-distributed cross-section has not been computed' + msg = 'Unable to get subdomain-averaged cross section since the ' \ + 'subdomain-distributed cross section has not been computed' raise ValueError(msg) # Construct a collection of the subdomain filter bins to average across @@ -478,18 +478,18 @@ class MultiGroupXS(object): tally._mean = mean tally._std_dev = std_dev - # Compute the subdomain-averaged multi-group cross-section + # Compute the subdomain-averaged multi-group cross section avg_xs.compute_xs() return avg_xs def print_xs(self, subdomains='all'): - """Prints a string representation for the multi-group cross-section. + """Prints a string representation for the multi-group cross section. Parameters ---------- subdomains : Iterable of Integral or 'all' - The subdomain IDs of the cross-sections to include in the report + The subdomain IDs of the cross sections to include in the report """ @@ -498,11 +498,11 @@ class MultiGroupXS(object): # Build header for string with type and domain info string = 'Multi-Group XS\n' - string += '{0: <16}=\t{1}\n'.format('\tType', self.xs_type) + string += '{0: <16}=\t{1}\n'.format('\tType', 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) - # Append cross-section data if it has been computed + # Append cross section data if it has been computed if self.xs_tally is not None: if subdomains == 'all': if self.domain_type == 'distribcell': @@ -516,7 +516,7 @@ class MultiGroupXS(object): if self.domain_type == 'distribcell': string += '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' # Loop over energy groups ranges @@ -558,7 +558,7 @@ class MultiGroupXS(object): # Store all of this MultiGroupXS' class attributes in the dictionary xs_results['name'] = self.name - xs_results['xs_type'] = self.xs_type + xs_results['rxn_type'] = self.rxn_type xs_results['domain_type'] = self.domain_type xs_results['domain'] = self.domain xs_results['energy_groups'] = self.energy_groups @@ -606,7 +606,7 @@ class MultiGroupXS(object): # Store the MultiGroupXS class attributes self.name = xs_results['name'] - self._xs_type = xs_results['xs_type'] + self._rxn_type = xs_results['rxn_type'] self.domain_type = xs_results['domain_type'] self.domain = xs_results['domain'] self.energy_groups = xs_results['energy_groups'] @@ -615,12 +615,12 @@ class MultiGroupXS(object): self._offset = xs_results['offset'] def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True): - """Export the multi-group cross-section data into an HDF5 binary file. + """Export the multi-group cross section data into an HDF5 binary file. This routine constructs an HDF5 file which stores the multi-group - cross-section data. The data is be stored in a hierarchy of HDF5 groups + cross section data. The data is be stored in a hierarchy of HDF5 groups from the domain type, domain id, subdomain id (for distribcell domains), - and cross-section type. Two datasets for the mean and standard deviation + and cross section type. Two datasets for the mean and standard deviation are stored for each subddomain entry in the HDF5 file. NOTE: This requires the h5py Python package. @@ -640,7 +640,7 @@ class MultiGroupXS(object): Raises ------ ValueError - When this method is called before the multi-group cross-section is + When this method is called before the multi-group cross section is computed from tally data. ImportError When h5py is not installed. @@ -649,7 +649,7 @@ class MultiGroupXS(object): if self.xs_tally is None: msg = 'Unable to get build HDF5 store since the ' \ - 'cross-section has not been computed' + 'cross section has not been computed' raise ValueError(msg) # Attempt to import h5py @@ -694,10 +694,10 @@ class MultiGroupXS(object): else: subdomain_group = domain_group - # Create a separate HDF5 group for the xs type - xs_group = subdomain_group.require_group(self.xs_type) + # Create a separate HDF5 group for the rxn type + xs_group = subdomain_group.require_group(self.rxn_type) - # Extract the cross-section for this + # Extract the cross section for this average = self.get_xs(subdomains=[subdomain], value='mean') std_dev = self.get_xs(subdomains=[subdomain], value='std_dev') average = average.squeeze() @@ -713,10 +713,10 @@ class MultiGroupXS(object): xs_results.close() def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv'): - """Export the multi-group cross-section data to a file. + """Export the multi-group cross section data to a file. This routine leverages the functionality in the Pandas library to - export the multi-group cross-section data in a variety of output + export the multi-group cross section data in a variety of output file formats for storage and/or post-processing. Parameters @@ -771,7 +771,7 @@ class MultiGroupXS(object): df.to_pickle(filename + '.pkl') elif format == 'latex': if self.domain_type == 'distribcell': - msg = 'Unable to export distribcell multi-group cross-section' \ + msg = 'Unable to export distribcell multi-group cross section' \ 'data to a LaTeX table' raise NotImplementedError(msg) @@ -796,7 +796,7 @@ class MultiGroupXS(object): """Build a Pandas DataFrame for the MultiGroupXS data. This routine leverages the Tally.get_pandas_dataframe(...) routine, but - renames the columns with terminology appropriate for cross-section data. + renames the columns with terminology appropriate for cross section data. Parameters ---------- @@ -815,19 +815,19 @@ class MultiGroupXS(object): Returns ------- pandas.DataFrame - A Pandas DataFrame for the cross-section data. + A Pandas DataFrame for the cross section data. Raises ------ ValueError - When this method is called before the multi-group cross-section is + When this method is called before the multi-group cross section is computed from tally data. """ if self.xs_tally is None: msg = 'Unable to get Pandas DataFrame since the ' \ - 'cross-section has not been computed' + 'cross section has not been computed' raise ValueError(msg) # Get a Pandas DataFrame from the derived xs tally @@ -871,10 +871,10 @@ class TotalXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(TotalXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'total' + self._rxn_type = 'total' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'total'] @@ -890,7 +890,7 @@ class TotalXS(MultiGroupXS): super(TotalXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the multi-group total cross-sections using OpenMC + """Computes the multi-group total cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['total'] / self.tallies['flux'] @@ -902,10 +902,10 @@ class TransportXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(TransportXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'transport' + self._rxn_type = 'transport' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'total', 'scatter-P1'] @@ -928,7 +928,7 @@ class TransportXS(MultiGroupXS): self.tallies['scatter-P1'].filters[-1].type = 'energy' def compute_xs(self): - """Computes the multi-group transport cross-sections using OpenMC + """Computes the multi-group transport cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] @@ -941,10 +941,10 @@ class AbsorptionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(AbsorptionXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'absorption' + self._rxn_type = 'absorption' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'absorption'] @@ -960,7 +960,7 @@ class AbsorptionXS(MultiGroupXS): super(AbsorptionXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the multi-group absorption cross-sections using OpenMC + """Computes the multi-group absorption cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['absorption'] / self.tallies['flux'] @@ -972,10 +972,10 @@ class CaptureXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(CaptureXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'capture' + self._rxn_type = 'capture' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'absorption', 'fission'] @@ -991,7 +991,7 @@ class CaptureXS(MultiGroupXS): super(CaptureXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the multi-group capture cross-sections using OpenMC + """Computes the multi-group capture cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['absorption'] - self.tallies['fission'] @@ -1004,10 +1004,10 @@ class FissionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(FissionXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'fission' + self._rxn_type = 'fission' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'fission'] @@ -1023,7 +1023,7 @@ class FissionXS(MultiGroupXS): super(FissionXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the multi-group fission cross-sections using OpenMC + """Computes the multi-group fission cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['fission'] / self.tallies['flux'] @@ -1035,10 +1035,10 @@ class NuFissionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(NuFissionXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'nu-fission' + self._rxn_type = 'nu-fission' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'nu-fission'] @@ -1054,7 +1054,7 @@ class NuFissionXS(MultiGroupXS): super(NuFissionXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the multi-group nu-fission cross-sections using OpenMC + """Computes the multi-group nu-fission cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] @@ -1066,10 +1066,10 @@ class ScatterXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(ScatterXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'scatter' + self._rxn_type = 'scatter' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'scatter'] @@ -1085,7 +1085,7 @@ class ScatterXS(MultiGroupXS): super(ScatterXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the scattering multi-group cross-sections using + """Computes the scattering multi-group cross sections using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['scatter'] / self.tallies['flux'] @@ -1097,10 +1097,10 @@ class NuScatterXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(NuScatterXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'nu-scatter' + self._rxn_type = 'nu-scatter' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter'] @@ -1116,7 +1116,7 @@ class NuScatterXS(MultiGroupXS): super(NuScatterXS, self).create_tallies(scores, filters, keys, estimator) def compute_xs(self): - """Computes the nu-scattering multi-group cross-section using OpenMC + """Computes the nu-scattering multi-group cross section using OpenMC tally arithmetic.""" self._xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] @@ -1128,10 +1128,10 @@ class ScatterMatrixXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'scatter matrix' + self._rxn_type = 'scatter matrix' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) @@ -1176,7 +1176,7 @@ class ScatterMatrixXS(MultiGroupXS): def get_xs(self, in_groups='all', out_groups='all', subdomains='all', value='mean'): - """Returns an array of multi-group cross-sections. + """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering matrix data data for one or more energy groups and subdomains. @@ -1199,19 +1199,19 @@ class ScatterMatrixXS(MultiGroupXS): Returns ------- xs : ndarray - A NumPy array of the multi-group cross-section indexed in the order + A NumPy array of the multi-group cross section indexed in the order each group and subdomain is listed in the parameters. Raises ------ ValueError - When this method is called before the multi-group cross-section is + When this method is called before the multi-group cross section is computed from tally data. """ if self.xs_tally is None: - msg = 'Unable to get cross-section since it has not been computed' + msg = 'Unable to get cross section since it has not been computed' raise ValueError(msg) cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) @@ -1240,19 +1240,19 @@ class ScatterMatrixXS(MultiGroupXS): filters.append('energyout') filter_bins.append((self.energy_groups.get_group_bounds(group),)) - # Query the multi-group cross-section tally for the data + # Query the multi-group cross section tally for the data xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) xs = np.nan_to_num(xs) return xs def print_xs(self, subdomains='all'): - """Prints a string representation for the multi-group cross-section. + """Prints a string representation for the multi-group cross section. Parameters ---------- subdomains : Iterable of Integral or 'all' - The subdomain IDs of the cross-sections to include in the report + The subdomain IDs of the cross sections to include in the report """ @@ -1261,11 +1261,11 @@ class ScatterMatrixXS(MultiGroupXS): # Build header for string with type and domain info string = 'Multi-Group XS\n' - string += '{0: <16}=\t{1}\n'.format('\tType', self.xs_type) + 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) - # Append cross-section data if it has been computed + # Append cross section data if it has been computed if self.xs_tally is not None: string += '{0: <16}\n'.format('\tEnergy Groups:') template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' @@ -1288,7 +1288,7 @@ class ScatterMatrixXS(MultiGroupXS): string += \ '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - string += '{0: <16}\n'.format('\tCross-Sections [cm^-1]:') + string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') template = '{0: <12}Group {1} -> Group {2}:\t\t' # Loop over incoming/outgoing energy groups ranges @@ -1312,10 +1312,10 @@ class NuScatterMatrixXS(ScatterMatrixXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'nu-scatter matrix' + self._rxn_type = 'nu-scatter matrix' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter', 'scatter-P1'] @@ -1362,10 +1362,10 @@ class Chi(MultiGroupXS): def __init__(self, domain=None, domain_type=None, groups=None, name=''): super(Chi, self).__init__(domain, domain_type, groups, name) - self._xs_type = 'chi' + self._rxn_type = 'chi' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross-section.""" + """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created scores = ['nu-fission', 'nu-fission'] From ddb249049cffd9a78c17c88b81dd2c27f43a22a6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 26 Sep 2015 19:32:15 -0400 Subject: [PATCH 041/130] Removed MultiGroupXS.pickle/unpickle routines, added initial implementatoin for micro multi-group cross-sectoins --- openmc/mgxs/mgxs.py | 433 ++++++++++++++++++++++++++------------------ 1 file changed, 260 insertions(+), 173 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 25807227d..d079445f0 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -4,7 +4,6 @@ import os import sys import copy import abc -import pickle import numpy as np @@ -75,10 +74,11 @@ class MultiGroupXS(object): __metaclass__ = abc.ABCMeta def __init__(self, domain=None, domain_type=None, - energy_groups=None, name=''): + xs_type=None, energy_groups=None, name=''): self._name = '' self._rxn_type = None + self._xs_type = None self._domain = None self._domain_type = None self._energy_groups = None @@ -87,6 +87,8 @@ class MultiGroupXS(object): self._xs_tally = None self.name = name + if xs_type is not None: + self.xs_type = xs_type if domain_type is not None: self.domain_type = domain_type if domain is not None: @@ -102,6 +104,7 @@ class MultiGroupXS(object): clone = type(self).__new__(type(self)) clone._name = self.name clone._rxn_type = self.rxn_type + clone._xs_type = self.xs_type clone._domain = self.domain clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) @@ -128,6 +131,10 @@ class MultiGroupXS(object): def rxn_type(self): return self._rxn_type + @property + def xs_type(self): + return self._xs_type + @property def domain(self): return self._domain @@ -163,6 +170,11 @@ class MultiGroupXS(object): cv.check_type('name', name, basestring) self._name = name + @xs_type.setter + def xs_type(self, xs_type): + cv.check_value('xs_type', xs_type, ('macro', 'micro')) + self._xs_type = xs_type + @domain.setter def domain(self, domain): cv.check_type('domain', domain, tuple(DOMAINS)) @@ -218,10 +230,16 @@ class MultiGroupXS(object): self.tallies[key].estimator = estimator self.tallies[key].add_filter(domain_filter) - # Add all non-domain specific Filters (i.e., 'energy') to the Tally + # Add all non-domain specific Filters (e.g., 'energy') to the Tally for filter in filters: self.tallies[key].add_filter(filter) + # If this is a microscopic cross-section, add all nuclides to tally + if self.xs_type == 'micro' and score != 'flux': + all_nuclides = self.domain.get_all_nuclides() + for nuclide in all_nuclides: + self.tallies[key].add_nuclide(nuclide) + @abc.abstractmethod def compute_xs(self): """Computes multi-group cross sections using OpenMC tally arithmetic.""" @@ -264,7 +282,8 @@ class MultiGroupXS(object): filter_bins, tally.nuclides) self.tallies[tally_type] = sp_tally - def get_xs(self, groups='all', subdomains='all', value='mean'): + def get_xs(self, groups='all', subdomains='all', + nuclides='all', xs_type='macro', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested multi-group @@ -278,6 +297,13 @@ class MultiGroupXS(object): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest + nuclides : Iterable of str or 'all' + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is 'all') + + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -286,7 +312,7 @@ class MultiGroupXS(object): ------- xs : ndarray A NumPy array of the multi-group cross section indexed in the order - each group and subdomain is listed in the parameters. + each group, subdomain and nuclide is listed in the parameters. Raises ------ @@ -319,9 +345,15 @@ class MultiGroupXS(object): filters.append('energy') filter_bins.append((self.energy_groups.get_group_bounds(group),)) + # Construct list of nuclides for all requested nuclides + if nuclides != 'all' and nuclides != ['total']: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = [] + # Query the multi-group cross section tally for the data - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=nuclides, value=value) return xs def get_condensed_xs(self, coarse_groups): @@ -439,11 +471,7 @@ class MultiGroupXS(object): # Clone this MultiGroupXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) - - # If domain is distribcell, make subdomain-averaged a 'cell' domain - if self.domain_type == 'distribcell': - avg_xs.domain_type = 'cell' - avg_xs._offset = 0 + avg_xs.domain_type = 'cell' # Average each of the tallies across subdomains for tally_type, tally in avg_xs.tallies.items(): @@ -483,7 +511,7 @@ class MultiGroupXS(object): return avg_xs - def print_xs(self, subdomains='all'): + def print_xs(self, subdomains='all', nuclides='all'): """Prints a string representation for the multi-group cross section. Parameters @@ -491,129 +519,73 @@ class MultiGroupXS(object): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report + nuclides : Iterable of str or 'all' + The nuclides of the cross-sections to include in the report + """ if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) + if nuclides != 'all': + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + if self.xs_type == 'micro': + nuclides = self.domain.get_all_nuclides() + else: + nuclides = ['total'] # Build header for string with type and domain info string = 'Multi-Group XS\n' - string += '{0: <16}=\t{1}\n'.format('\tType', self.rxn_type) + 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) - # Append cross section data if it has been computed - if self.xs_tally is not None: - if subdomains == 'all': - if self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) + # If cross section data has not been computed, only print string header + if self.xs_tally is None: + print(string) + return + + if subdomains == 'all': + if self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + else: + subdomains = [self.domain.id] + + # 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 cross section type based on the nuclide + if nuclide == 'total': + string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') else: - subdomains = [self.domain.id] + string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) + string += '{0: <16}\n'.format('\tCross Sections [barns]:') - # Loop over all subdomains - for subdomain in subdomains: - - if self.domain_type == 'distribcell': - string += '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - - string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') 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], 'mean') - rel_err = self.get_xs([group], [subdomain], 'rel_err')*100. + average = self.get_xs([group], [subdomain], + [nuclide], 'mean') + rel_err = self.get_xs([group], [subdomain], + [nuclide], 'rel_err') * 100. average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' + string += '\n' print(string) - def pickle(self, filename='mgxs', directory='mgxs'): - """Store the MultiGroupXS as a pickled binary file. - - Parameters - ---------- - filename : str - Filename for the pickled binary file (default is 'mgxs') - - directory : str - Directory for the pickled binary file (default is 'mgxs') - - """ - - cv.check_type('filename', filename, basestring) - cv.check_type('directory', directory, basestring) - - # Make directory if it does not exist - if not os.path.exists(directory): - os.makedirs(directory) - - # Create an empty dictionary to store the data - xs_results = dict() - - # Store all of this MultiGroupXS' class attributes in the dictionary - xs_results['name'] = self.name - xs_results['rxn_type'] = self.rxn_type - xs_results['domain_type'] = self.domain_type - xs_results['domain'] = self.domain - xs_results['energy_groups'] = self.energy_groups - xs_results['tallies'] = self.tallies - xs_results['xs_tally'] = self.xs_tally - xs_results['offset'] = self.offset - xs_results['subdomain_indices'] = self.subdomain_indices - - # Pickle the MultiGroupXS results to a binary file - filename = directory + '/' + filename + '.pkl' - filename = filename.replace(' ', '-') - pickle.dump(xs_results, open(filename, 'wb')) - - def unpickle(self, filename='mgxs', directory='mgxs'): - """Restore the MultiGroupXS from a pickled binary file. - - Parameters - ---------- - filename : str - Filename for the pickled binary file (default is 'mgxs') - - directory : str - Directory for the pickled binary file (default is 'mgxs') - - Raises - ------ - ValueError - When the requested filename does not exist. - - """ - - cv.check_type('filename', filename, basestring) - cv.check_type('directory', directory, basestring) - - filename = directory + '/' + filename + '.pkl' - filename = filename.replace(' ', '-') - - # Check that the file exists - if not os.path.exists(filename): - msg = 'Unable to import from filename="{0}"'.format(filename) - raise ValueError(msg) - - # Load the pickle file into a dictionary - xs_results = pickle.load(open(filename, 'rb')) - - # Store the MultiGroupXS class attributes - self.name = xs_results['name'] - self._rxn_type = xs_results['rxn_type'] - self.domain_type = xs_results['domain_type'] - self.domain = xs_results['domain'] - self.energy_groups = xs_results['energy_groups'] - self._tallies = xs_results['tallies'] - self._xs_tally = xs_results['xs_tally'] - self._offset = xs_results['offset'] - def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True): """Export the multi-group cross section data into an HDF5 binary file. @@ -671,6 +643,14 @@ class MultiGroupXS(object): else: xs_results = h5py.File(filename, 'w') + if self.xs_type == 'micro': + nuclides = self.domain.get_all_nuclides() + densities = [] + for nuclide in nuclides: + densities.append(nuclides[nuclide][1]) + else: + nuclides = ['total'] + # Create an HDF5 group within the file for the domain domain_type_group = xs_results.require_group(self.domain_type) group_name = '{0} {1}'.format(self.domain_type, self.domain.id) @@ -684,7 +664,7 @@ class MultiGroupXS(object): # Determine number of digits to pad subdomain group keys num_digits = len(str(self.num_subdomains)) - # Create a separate HDF5 dataset for each subdomain + # Create a separate HDF5 group for each subdomain for i, subdomain in enumerate(subdomains): # Create an HDF5 group for the subdomain @@ -695,19 +675,31 @@ class MultiGroupXS(object): subdomain_group = domain_group # Create a separate HDF5 group for the rxn type - xs_group = subdomain_group.require_group(self.rxn_type) + rxn_group = subdomain_group.require_group(self.rxn_type) - # Extract the cross section for this - average = self.get_xs(subdomains=[subdomain], value='mean') - std_dev = self.get_xs(subdomains=[subdomain], value='std_dev') - average = average.squeeze() - std_dev = std_dev.squeeze() + # Create a separate HDF5 group for each nuclide + for j, nuclide in enumerate(nuclides): - # Add MultiGroupXS results data to the HDF5 group - xs_group.require_dataset('average', dtype=np.float64, - shape=average.shape, data=average) - xs_group.require_dataset('std. dev.', dtype=np.float64, - shape=std_dev.shape, data=std_dev) + if nuclide != 'total': + nuclide_group = rxn_group.require_group(nuclide) + nuclide_group.require_dataset('density', dtype=np.float64, + data=[densities[j]], shape=(1,)) + else: + nuclide_group = rxn_group + + # Extract the cross section for this subdomain and nuclide + average = self.get_xs(subdomains=[subdomain], + nuclides=[nuclide], value='mean') + std_dev = self.get_xs(subdomains=[subdomain], + nuclides=[nuclide], value='std_dev') + average = average.squeeze() + std_dev = std_dev.squeeze() + + # Add MultiGroupXS results data to the HDF5 group + nuclide_group.require_dataset('average', dtype=np.float64, + shape=average.shape, data=average) + nuclide_group.require_dataset('std. dev.', dtype=np.float64, + shape=std_dev.shape, data=std_dev) # Close the MultiGroup results HDF5 file xs_results.close() @@ -791,7 +783,6 @@ class MultiGroupXS(object): modified.write(data) modified.write('\n\\end{document}') - def get_pandas_dataframe(self, groups='indices', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. @@ -869,8 +860,9 @@ class MultiGroupXS(object): class TotalXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(TotalXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(TotalXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'total' def create_tallies(self): @@ -900,8 +892,9 @@ class TotalXS(MultiGroupXS): class TransportXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(TransportXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(TransportXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'transport' def create_tallies(self): @@ -939,8 +932,9 @@ class TransportXS(MultiGroupXS): class AbsorptionXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(AbsorptionXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(AbsorptionXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'absorption' def create_tallies(self): @@ -970,8 +964,9 @@ class AbsorptionXS(MultiGroupXS): class CaptureXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(CaptureXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(CaptureXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'capture' def create_tallies(self): @@ -1002,8 +997,9 @@ class CaptureXS(MultiGroupXS): class FissionXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(FissionXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(FissionXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'fission' def create_tallies(self): @@ -1033,8 +1029,9 @@ class FissionXS(MultiGroupXS): class NuFissionXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(NuFissionXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(NuFissionXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'nu-fission' def create_tallies(self): @@ -1064,8 +1061,9 @@ class NuFissionXS(MultiGroupXS): class ScatterXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(ScatterXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(ScatterXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'scatter' def create_tallies(self): @@ -1095,8 +1093,9 @@ class ScatterXS(MultiGroupXS): class NuScatterXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(NuScatterXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(NuScatterXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'nu-scatter' def create_tallies(self): @@ -1126,8 +1125,9 @@ class NuScatterXS(MultiGroupXS): class ScatterMatrixXS(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(ScatterMatrixXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'scatter matrix' def create_tallies(self): @@ -1175,7 +1175,7 @@ class ScatterMatrixXS(MultiGroupXS): self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) def get_xs(self, in_groups='all', out_groups='all', - subdomains='all', value='mean'): + subdomains='all', nuclides='all', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering @@ -1192,6 +1192,10 @@ class ScatterMatrixXS(MultiGroupXS): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest + nuclides : Iterable of str or 'all' + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is 'all') + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -1240,13 +1244,19 @@ class ScatterMatrixXS(MultiGroupXS): filters.append('energyout') filter_bins.append((self.energy_groups.get_group_bounds(group),)) + # Construct list of nuclides for all requested nuclides + if nuclides != 'all' and nuclides != ['total']: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = [] + # Query the multi-group cross section tally for the data - xs = self.xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=nuclides, value=value) xs = np.nan_to_num(xs) return xs - def print_xs(self, subdomains='all'): + def print_xs(self, subdomains='all', nuclides='all'): """Prints a string representation for the multi-group cross section. Parameters @@ -1254,10 +1264,20 @@ class ScatterMatrixXS(MultiGroupXS): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report + nuclides : Iterable of str or 'all' + The nuclides of the cross-sections to include in the report + """ if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) + if nuclides != 'all': + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + if self.xs_type == 'micro': + nuclides = self.domain.get_all_nuclides() + else: + nuclides = ['total'] # Build header for string with type and domain info string = 'Multi-Group XS\n' @@ -1265,53 +1285,70 @@ class ScatterMatrixXS(MultiGroupXS): string += '{0: <16}=\t{1}\n'.format('\tDomain Type', self.domain_type) string += '{0: <16}=\t{1}\n'.format('\tDomain ID', self.domain.id) - # Append cross section data if it has been computed - if self.xs_tally is not None: - string += '{0: <16}\n'.format('\tEnergy Groups:') - template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' + # If cross section data has not been computed, only print string header + if self.xs_tally is None: + print(string) + return - # 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]) + string += '{0: <16}\n'.format('\tEnergy Groups:') + template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]\n' - if subdomains == 'all': - if self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) + # 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]) + + if subdomains == 'all': + if self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + else: + subdomains = [self.domain.id] + + # 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 cross section type based on the nuclide + if nuclide == 'total': + string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') else: - subdomains = [self.domain.id] + string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) + string += '{0: <16}\n'.format('\tCross Sections [barns]:') - # Loop over all subdomains - for subdomain in subdomains: - - if self.domain_type == 'distribcell': - string += \ - '{0: <16}=\t{1}\n'.format('\tSubdomain', subdomain) - - string += '{0: <16}\n'.format('\tCross Sections [cm^-1]:') template = '{0: <12}Group {1} -> Group {2}:\t\t' # Loop over incoming/outgoing energy groups ranges for in_group in range(1, self.num_groups+1): for out_group in range(1, self.num_groups+1): string += template.format('', in_group, out_group) - average = self.get_xs([in_group], [out_group], - [subdomain], 'mean') - rel_err = self.get_xs([in_group], [out_group], - [subdomain], 'rel_err') * 100. + average = \ + self.get_xs([in_group], [out_group], + [subdomain], [nuclide], 'mean') + rel_err = \ + self.get_xs([in_group], [out_group], + [subdomain], [nuclide], 'rel_err') * 100 average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:1.2e} +/- {:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' + string += '\n' + string += '\n' print(string) class NuScatterMatrixXS(ScatterMatrixXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(NuScatterMatrixXS, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'nu-scatter matrix' def create_tallies(self): @@ -1360,10 +1397,13 @@ class NuScatterMatrixXS(ScatterMatrixXS): class Chi(MultiGroupXS): - def __init__(self, domain=None, domain_type=None, groups=None, name=''): - super(Chi, self).__init__(domain, domain_type, groups, name) + def __init__(self, domain=None, domain_type=None, + xs_type=None, groups=None, name=''): + super(Chi, self).__init__(domain, domain_type, xs_type, groups, name) self._rxn_type = 'chi' + # FIXME: Make this work for micros!!! + def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross section.""" @@ -1390,3 +1430,50 @@ class Chi(MultiGroupXS): self._xs_tally = nu_fission_out / nu_fission_in self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + + def get_xs(self, groups='all', subdomains='all', + nuclides='all', xs_type='macro', value='mean'): + """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. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest + + subdomains : Iterable of Integral or 'all' + Subdomain IDs of interest + + nuclides : Iterable of str or 'all' + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is 'all') + + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + + value : str + A string for the type of value to return - 'mean' (default), + 'std_dev' or 'rel_err' are accepted + + Returns + ------- + xs : 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. + + """ + + if self.xs_type == 'micro' and xs_type == 'macro': + raise NotImplementedError('Unable to compute macro Chi from micros') + + xs = super(Chi, self).get_xs(groups, subdomains, + nuclides, xs_type, value) + return xs From fe16bb4b10a6fcf5847b67a457e4f72413cef7cb Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 27 Sep 2015 00:29:46 -0400 Subject: [PATCH 042/130] Fixed tiling/repeating for tally arithmetic needed for micro xs in Python API --- openmc/element.py | 22 +++++++------- openmc/mgxs/mgxs.py | 70 ++++++++++++++++++++++++--------------------- openmc/nuclide.py | 25 +++++++--------- openmc/tallies.py | 16 ++++------- 4 files changed, 66 insertions(+), 67 deletions(-) diff --git a/openmc/element.py b/openmc/element.py index 2f81b9f30..a99d47127 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -38,18 +38,18 @@ class Element(object): if xs is not None: self.xs = xs - def __eq__(self, element2): - # Check type - if not isinstance(element2, Element): - return False - - # Check name and xs - if self._name != element2._name: - return False - elif self._xs != element2._xs: - return False - else: + def __eq__(self, other): + if isinstance(other, Element): + if self._name != other._name: + return False + elif self._xs != other._xs: + return False + else: + return True + elif isinstance(other, basestring) and other == self.name: return True + else: + return False def __hash__(self): return hash((self._name, self._xs)) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d079445f0..91e1635fe 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -74,7 +74,7 @@ class MultiGroupXS(object): __metaclass__ = abc.ABCMeta def __init__(self, domain=None, domain_type=None, - xs_type=None, energy_groups=None, name=''): + energy_groups=None, xs_type='macro', name=''): self._name = '' self._rxn_type = None @@ -87,8 +87,7 @@ class MultiGroupXS(object): self._xs_tally = None self.name = name - if xs_type is not None: - self.xs_type = xs_type + self.xs_type = xs_type if domain_type is not None: self.domain_type = domain_type if domain is not None: @@ -322,6 +321,8 @@ class MultiGroupXS(object): """ + # TODO: Multiply by densities + if self.xs_tally is None: msg = 'Unable to get cross section since it has not been computed' raise ValueError(msg) @@ -688,10 +689,10 @@ class MultiGroupXS(object): nuclide_group = rxn_group # Extract the cross section for this subdomain and nuclide - average = self.get_xs(subdomains=[subdomain], - nuclides=[nuclide], value='mean') - std_dev = self.get_xs(subdomains=[subdomain], - nuclides=[nuclide], value='std_dev') + average = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], + xs_type=self.xs_type, value='mean') + std_dev = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], + xs_type=self.xs_type, value='std_dev') average = average.squeeze() std_dev = std_dev.squeeze() @@ -861,8 +862,8 @@ class MultiGroupXS(object): class TotalXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(TotalXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(TotalXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'total' def create_tallies(self): @@ -893,8 +894,8 @@ class TotalXS(MultiGroupXS): class TransportXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(TransportXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(TransportXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'transport' def create_tallies(self): @@ -933,8 +934,8 @@ class TransportXS(MultiGroupXS): class AbsorptionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(AbsorptionXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(AbsorptionXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'absorption' def create_tallies(self): @@ -965,8 +966,8 @@ class AbsorptionXS(MultiGroupXS): class CaptureXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(CaptureXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(CaptureXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'capture' def create_tallies(self): @@ -998,8 +999,8 @@ class CaptureXS(MultiGroupXS): class FissionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(FissionXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(FissionXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'fission' def create_tallies(self): @@ -1030,8 +1031,8 @@ class FissionXS(MultiGroupXS): class NuFissionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(NuFissionXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(NuFissionXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'nu-fission' def create_tallies(self): @@ -1062,8 +1063,8 @@ class NuFissionXS(MultiGroupXS): class ScatterXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(ScatterXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(ScatterXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'scatter' def create_tallies(self): @@ -1094,8 +1095,8 @@ class ScatterXS(MultiGroupXS): class NuScatterXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(NuScatterXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(NuScatterXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'nu-scatter' def create_tallies(self): @@ -1126,8 +1127,8 @@ class NuScatterXS(MultiGroupXS): class ScatterMatrixXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(ScatterMatrixXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'scatter matrix' def create_tallies(self): @@ -1174,8 +1175,8 @@ class ScatterMatrixXS(MultiGroupXS): self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) - def get_xs(self, in_groups='all', out_groups='all', - subdomains='all', nuclides='all', value='mean'): + def get_xs(self, in_groups='all', out_groups='all', subdomains='all', + nuclides='all', xs_type='macro', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering @@ -1196,6 +1197,9 @@ class ScatterMatrixXS(MultiGroupXS): A list of nuclide name strings (e.g., ['U-235', 'U-238']; default is 'all') + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -1214,6 +1218,8 @@ class ScatterMatrixXS(MultiGroupXS): """ + # TODO: Deal with xs_type and micros + if self.xs_tally is None: msg = 'Unable to get cross section since it has not been computed' raise ValueError(msg) @@ -1332,7 +1338,7 @@ class ScatterMatrixXS(MultiGroupXS): [subdomain], [nuclide], 'mean') rel_err = \ self.get_xs([in_group], [out_group], - [subdomain], [nuclide], 'rel_err') * 100 + [subdomain], [nuclide],'rel_err') * 100 average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:1.2e} +/- {:1.2e}%'.format(average, rel_err) @@ -1347,8 +1353,8 @@ class ScatterMatrixXS(MultiGroupXS): class NuScatterMatrixXS(ScatterMatrixXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(NuScatterMatrixXS, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'nu-scatter matrix' def create_tallies(self): @@ -1398,8 +1404,8 @@ class NuScatterMatrixXS(ScatterMatrixXS): class Chi(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - xs_type=None, groups=None, name=''): - super(Chi, self).__init__(domain, domain_type, xs_type, groups, name) + groups=None, xs_type='macro', name=''): + super(Chi, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'chi' # FIXME: Make this work for micros!!! diff --git a/openmc/nuclide.py b/openmc/nuclide.py index 7e7cd5af3..a616edac9 100644 --- a/openmc/nuclide.py +++ b/openmc/nuclide.py @@ -41,21 +41,18 @@ class Nuclide(object): if xs is not None: self.xs = xs - def __eq__(self, nuclide2): - # Check type - if not isinstance(nuclide2, Nuclide): - return False - - # Check name - elif self._name != nuclide2._name: - return False - - # Check xs - elif self._xs != nuclide2._xs: - return False - - else: + def __eq__(self, other): + if isinstance(other, Nuclide): + if self._name != other._name: + return False + elif self._xs != other._xs: + return False + else: + return True + elif isinstance(other, basestring) and other == self.name: return True + else: + return False def __hash__(self): return hash((self._name, self._xs)) diff --git a/openmc/tallies.py b/openmc/tallies.py index a5b55d810..9b753fe49 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1666,8 +1666,8 @@ class Tally(object): if self_repeat_factor == 1: other_shape[0] *= other_tile_factor - other_mean = np.repeat(other_mean, other_tile_factor) - other_std_dev = np.repeat(other_std_dev, other_tile_factor) + other_mean = np.repeat(other_mean, other_tile_factor, axis=0) + other_std_dev = np.repeat(other_std_dev, other_tile_factor, axis=0) else: other_mean = np.tile(other_mean, (other_tile_factor, 1, 1)) other_std_dev = np.tile(other_std_dev, (other_tile_factor, 1, 1)) @@ -1687,11 +1687,9 @@ class Tally(object): self_shape = list(self.mean.shape) # Replicate the data - self_mean = np.repeat(self_mean, self_repeat_factor) -# self_mean = np.repeat(self_mean, self_repeat_factor, axis=1) + self_mean = np.repeat(self_mean, self_repeat_factor, axis=1) other_mean = np.tile(other_mean, (1, other_tile_factor, 1)) -# self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1) - self_std_dev = np.repeat(self_std_dev, self_repeat_factor) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1) other_std_dev = np.tile(other_std_dev, (1, other_tile_factor, 1)) self_shape[1] *= self_repeat_factor @@ -1708,11 +1706,9 @@ class Tally(object): self_shape = list(self.mean.shape) # Replicate the data - self_mean = np.repeat(self_mean, self_repeat_factor) -# self_mean = np.repeat(self_mean, self_repeat_factor, axis=2) + self_mean = np.repeat(self_mean, self_repeat_factor, axis=2) other_mean = np.tile(other_mean, (1, 1, other_tile_factor)) - self_std_dev = np.repeat(self_std_dev, self_repeat_factor) -# self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2) + self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2) other_std_dev = np.tile(other_std_dev, (1, 1, other_tile_factor)) self_shape[2] *= self_repeat_factor From 0374a07c6f76e7f6b5476a4e9336b6bc66edb6ff Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 27 Sep 2015 16:05:07 -0400 Subject: [PATCH 043/130] Added nuclide and number density getter routines to Python API MultiGroupXS class --- openmc/cross.py | 4 +- openmc/filter.py | 1 - openmc/mgxs/mgxs.py | 198 ++++++++++++++++++++++++++++++++++---------- openmc/tallies.py | 5 +- 4 files changed, 158 insertions(+), 50 deletions(-) diff --git a/openmc/cross.py b/openmc/cross.py index fa1ce6e63..e2281142c 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -1,7 +1,7 @@ import sys from openmc import Filter, Nuclide -from openmc.constants import FILTER_TYPES +from openmc.filter import _FILTER_TYPES import openmc.checkvalue as cv @@ -345,7 +345,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.values(): msg = 'Unable to set Filter type to "{0}" since it is not one ' \ 'of the supported types'.format(type) raise ValueError(msg) diff --git a/openmc/filter.py b/openmc/filter.py index b8865a184..2f09d93f2 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -7,7 +7,6 @@ import numpy as np from openmc import Mesh from openmc.summary import Summary -from openmc.constants import * import openmc.checkvalue as cv diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 91e1635fe..f4c569e16 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -190,6 +190,96 @@ class MultiGroupXS(object): self._energy_groups = energy_groups self._num_groups = energy_groups.num_groups + def get_all_nuclides(self): + """Get all nuclides in the cross section's spatial domain. + + Returns + ------- + nuclides : list of str + A list of the string names for each nuclide in the problem domain + (e.g., ['U-235', 'U-238', 'O-16']) + + Raises + ------ + ValueError + When this method is called before the spatial domain has been set. + + """ + + if self.domain is None: + raise ValueError('Unable to get all nuclides without a domain') + + nuclides = self.domain.get_all_nuclides() + return nuclides.keys() + + def get_nuclide_density(self, nuclide): + """Get the atomic number density for a nuclide in the cross section's + spatial domain. + + nuclide : str + A nuclide name string (e.g., 'U-235') + + Returns + ------- + density : Real + The atomic number density for the nuclide of interest + + Raises + ------ + ValueError + When the density is requested for a nuclide which is not found in + the spatial domain. + + """ + + cv.check_type('nuclide', nuclide, basestring) + + # Get list of all nuclides in the spatial domain + nuclides = self.domain.get_all_nuclides() + + if nuclide not in nuclides: + msg = 'Unable to get density for nuclide "{0}" which is not in ' \ + '{1} "{2}"'.format(nuclide, self.domain_type, self.domain.id) + ValueError(msg) + + density = nuclides[nuclide][1] + return density + + def get_nuclide_densities(self, nuclides='all'): + """Get all atomic number densities in the cross section's spatial domain. + + nuclides : Iterable of str or 'all' + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is 'all') + + Returns + ------- + densities : ndarray of float + The atomic number densities corresponding to each of the nuclides + in the problem domain + + Raises + ------ + ValueError + When this method is called before the spatial domain has been set. + + """ + + if self.domain is None: + raise ValueError('Unable to get nuclide densities without a domain') + + # If the user requested the densities for all nuclides, get a list of + # all of the nuclide name strings + if nuclides == 'all': + nuclides =self.domain.get_all_nuclides() + + # Loop over each nuclide and find and store its atomic number density + densities = np.zeros(len(nuclides), dtype=np.float) + for i, nuclide in enumerate(nuclides): + densities[i] = self.get_nuclide_density(nuclide) + + return densities + @abc.abstractmethod def create_tallies(self, scores, all_filters, keys, estimator): """Instantiates tallies needed to compute the multi-group cross section. @@ -243,7 +333,15 @@ class MultiGroupXS(object): def compute_xs(self): """Computes multi-group cross sections using OpenMC tally arithmetic.""" - return + # If a microscopic cross-section, replace CrossNuclides with originals + if self.xs_type == 'micro': + self.xs_tally._nuclides = [] + nuclides = self.domain.get_all_nuclides() + for nuclide in nuclides: + self.xs_tally.add_nuclide(nuclide) + + self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) + self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) def load_from_statepoint(self, statepoint): """Extracts tallies in an OpenMC StatePoint with the data needed to @@ -321,8 +419,6 @@ class MultiGroupXS(object): """ - # TODO: Multiply by densities - if self.xs_tally is None: msg = 'Unable to get cross section since it has not been computed' raise ValueError(msg) @@ -355,6 +451,13 @@ class MultiGroupXS(object): # Query the multi-group cross section tally for the data xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, nuclides=nuclides, value=value) + + # If user requested microscopic cross sections from an object with + # microscopic cross sections, divide by atom number densities + if self.xs_type == 'micro' and xs_type == 'micro': + densities = self.get_nuclide_densities(nuclides) + if value == 'mean' or value == 'std_dev': + xs /= densities[np.newaxis, :, np.newaxis] return xs def get_condensed_xs(self, coarse_groups): @@ -512,7 +615,7 @@ class MultiGroupXS(object): return avg_xs - def print_xs(self, subdomains='all', nuclides='all'): + def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): """Prints a string representation for the multi-group cross section. Parameters @@ -523,6 +626,9 @@ class MultiGroupXS(object): nuclides : Iterable of str or 'all' The nuclides of the cross-sections to include in the report + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + """ if subdomains != 'all': @@ -561,11 +667,14 @@ class MultiGroupXS(object): # Loop over all Nuclides for nuclide in nuclides: - # Build header for cross section type based on the nuclide - if nuclide == 'total': + # Build header for nuclide type + if xs_type != 'total': + 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}=\t{1}\n'.format('\tNuclide', nuclide) string += '{0: <16}\n'.format('\tCross Sections [barns]:') template = '{0: <12}Group {1} [{2: <10} - {3: <10}MeV]:\t' @@ -575,9 +684,9 @@ class MultiGroupXS(object): bounds = self.energy_groups.get_group_bounds(group) string += template.format('', group, bounds[0], bounds[1]) average = self.get_xs([group], [subdomain], - [nuclide], 'mean') + [nuclide], xs_type, 'mean') rel_err = self.get_xs([group], [subdomain], - [nuclide], 'rel_err') * 100. + [nuclide], xs_type, 'rel_err') * 100 average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) @@ -646,9 +755,9 @@ class MultiGroupXS(object): if self.xs_type == 'micro': nuclides = self.domain.get_all_nuclides() - densities = [] - for nuclide in nuclides: - densities.append(nuclides[nuclide][1]) + densities = np.zeros(len(nuclides), dtype=np.float) + for i, nuclide in enumerate(nuclides): + densities[i] = nuclides[nuclide][1] else: nuclides = ['total'] @@ -887,8 +996,7 @@ class TotalXS(MultiGroupXS): tally arithmetic.""" self._xs_tally = self.tallies['total'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(TotalXS, self).compute_xs() class TransportXS(MultiGroupXS): @@ -927,8 +1035,7 @@ class TransportXS(MultiGroupXS): self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(TotalXS, self).compute_xs() class AbsorptionXS(MultiGroupXS): @@ -959,8 +1066,7 @@ class AbsorptionXS(MultiGroupXS): tally arithmetic.""" self._xs_tally = self.tallies['absorption'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(AbsorptionXS, self).compute_xs() class CaptureXS(MultiGroupXS): @@ -992,8 +1098,7 @@ class CaptureXS(MultiGroupXS): self._xs_tally = self.tallies['absorption'] - self.tallies['fission'] self._xs_tally /= self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(CaptureXS, self).compute_xs() class FissionXS(MultiGroupXS): @@ -1024,8 +1129,7 @@ class FissionXS(MultiGroupXS): tally arithmetic.""" self._xs_tally = self.tallies['fission'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(FissionXS, self).compute_xs() class NuFissionXS(MultiGroupXS): @@ -1056,8 +1160,7 @@ class NuFissionXS(MultiGroupXS): tally arithmetic.""" self._xs_tally = self.tallies['nu-fission'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(NuFissionXS, self).compute_xs() class ScatterXS(MultiGroupXS): @@ -1088,8 +1191,7 @@ class ScatterXS(MultiGroupXS): OpenMC tally arithmetic.""" self._xs_tally = self.tallies['scatter'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(ScatterXS, self).compute_xs() class NuScatterXS(MultiGroupXS): @@ -1120,8 +1222,7 @@ class NuScatterXS(MultiGroupXS): tally arithmetic.""" self._xs_tally = self.tallies['nu-scatter'] / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(NuScatterXS, self).compute_xs() class ScatterMatrixXS(MultiGroupXS): @@ -1172,8 +1273,7 @@ class ScatterMatrixXS(MultiGroupXS): rxn_tally = self.tallies['scatter'] self._xs_tally = rxn_tally / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(ScatterMatrixXS, self).compute_xs() def get_xs(self, in_groups='all', out_groups='all', subdomains='all', nuclides='all', xs_type='macro', value='mean'): @@ -1218,8 +1318,6 @@ class ScatterMatrixXS(MultiGroupXS): """ - # TODO: Deal with xs_type and micros - if self.xs_tally is None: msg = 'Unable to get cross section since it has not been computed' raise ValueError(msg) @@ -1260,9 +1358,17 @@ class ScatterMatrixXS(MultiGroupXS): xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, nuclides=nuclides, value=value) xs = np.nan_to_num(xs) + + # If user requested microscopic cross sections from an object with + # microscopic cross sections, divide by atom number densities + if self.xs_type == 'micro' and xs_type == 'micro': + densities = self.get_nuclide_densities(nuclides) + if value == 'mean' or value == 'std_dev': + xs /= densities[np.newaxis, :, np.newaxis] + return xs - def print_xs(self, subdomains='all', nuclides='all'): + def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): """Prints a string representation for the multi-group cross section. Parameters @@ -1273,6 +1379,9 @@ class ScatterMatrixXS(MultiGroupXS): nuclides : Iterable of str or 'all' The nuclides of the cross-sections to include in the report + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + """ if subdomains != 'all': @@ -1320,11 +1429,14 @@ class ScatterMatrixXS(MultiGroupXS): # Loop over all Nuclides for nuclide in nuclides: - # Build header for cross section type based on the nuclide - if nuclide == 'total': + # Build header for nuclide type + if xs_type != 'total': + 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}=\t{1}\n'.format('\tNuclide', nuclide) string += '{0: <16}\n'.format('\tCross Sections [barns]:') template = '{0: <12}Group {1} -> Group {2}:\t\t' @@ -1334,11 +1446,11 @@ class ScatterMatrixXS(MultiGroupXS): for out_group in range(1, self.num_groups+1): string += template.format('', in_group, out_group) average = \ - self.get_xs([in_group], [out_group], - [subdomain], [nuclide], 'mean') + self.get_xs([in_group], [out_group], [subdomain], + [nuclide], xs_type, 'mean') rel_err = \ - self.get_xs([in_group], [out_group], - [subdomain], [nuclide],'rel_err') * 100 + self.get_xs([in_group], [out_group], [subdomain], + [nuclide], xs_type, 'rel_err') * 100 average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:1.2e} +/- {:1.2e}%'.format(average, rel_err) @@ -1398,8 +1510,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): rxn_tally = self.tallies['nu-scatter'] self._xs_tally = rxn_tally / self.tallies['flux'] - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(ScatterMatrixXS, self).compute_xs() class Chi(MultiGroupXS): @@ -1434,8 +1545,7 @@ class Chi(MultiGroupXS): nu_fission_out = self.tallies['nu-fission-out'] nu_fission_in.remove_filter(nu_fission_in.filters[-1]) self._xs_tally = nu_fission_out / nu_fission_in - self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) - self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) + super(Chi, self).compute_xs() def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', value='mean'): diff --git a/openmc/tallies.py b/openmc/tallies.py index 9b753fe49..6429d8529 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1,4 +1,4 @@ -from collections import Iterable, defaultdict +from collections import Iterable import copy import os import pickle @@ -9,9 +9,8 @@ import sys import numpy as np -from openmc import Mesh, Filter, Trigger, Nuclide, FILTER_TYPES +from openmc import Mesh, Filter, Trigger, Nuclide from openmc.cross import CrossScore, CrossNuclide, CrossFilter -from openmc.summary import Summary import openmc.checkvalue as cv from openmc.clean_xml import * From 6e9dc5b09f2b53e517a0402a913be653b0ec0c8f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 27 Sep 2015 17:14:29 -0400 Subject: [PATCH 044/130] Python API MultiGroupXS.load_from_statepoint(...) routine now resets domain type to get isotopic number densities from OpenMC --- openmc/mgxs/mgxs.py | 27 +++++++++++++++++++++++++++ openmc/statepoint.py | 17 ++++++++++++----- openmc/summary.py | 2 +- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f4c569e16..f5e37680d 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -359,6 +359,25 @@ class MultiGroupXS(object): cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) + if not statepoint.with_summary: + msg = 'Unable to load data from a statepoint which has not been ' \ + 'linked with a summary file' + raise ValueError(msg) + + # Override the domain object that loaded from an OpenMC summary file + # NOTE: This is necessary for micro cross-sections which require + # the isotopic number densities as computed by OpenMC + if self.domain_type == 'cell': + self.domain = statepoint.summary.get_cell_by_id(self.domain.id) + elif self.domain_type == 'universe': + 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) + else: + msg = 'Unable to load data from a statepoint for domain type {} ' \ + 'which is not yet supported'.format(self.domain_type) + raise ValueError(msg) + # Create Tallies to search for in StatePoint self.create_tallies() @@ -424,6 +443,7 @@ class MultiGroupXS(object): raise ValueError(msg) cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) filters = [] filter_bins = [] @@ -631,6 +651,8 @@ class MultiGroupXS(object): """ + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) if nuclides != 'all': @@ -1323,6 +1345,7 @@ class ScatterMatrixXS(MultiGroupXS): raise ValueError(msg) cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) filters = [] filter_bins = [] @@ -1384,6 +1407,8 @@ class ScatterMatrixXS(MultiGroupXS): """ + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) if nuclides != 'all': @@ -1587,6 +1612,8 @@ class Chi(MultiGroupXS): """ + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + if self.xs_type == 'micro' and xs_type == 'macro': raise NotImplementedError('Unable to compute macro Chi from micros') diff --git a/openmc/statepoint.py b/openmc/statepoint.py index f90e429cc..f58994b8c 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -82,8 +82,8 @@ class StatePoint(object): Indicate whether user-defined tallies are present version: tuple of int Version of OpenMC - with_summary : bool - Indicate whether statepoint data has been linked against a summary file + summary : None or openmc.summary.Summary + A summary object if the statepoint has been linked with a summary file """ @@ -104,7 +104,7 @@ class StatePoint(object): # Set flags for what data has been read self._meshes_read = False self._tallies_read = False - self._with_summary = False + self._summary = False self._global_tallies = None def close(self): @@ -457,9 +457,16 @@ class StatePoint(object): self._f['version_minor'].value, self._f['version_release'].value) + @property + def summary(self): + return self._summary + @property def with_summary(self): - return self._with_summary + if self.summary is None: + return False + else: + return True def get_tally(self, scores=[], filters=[], nuclides=[], name=None, id=None, estimator=None): @@ -628,4 +635,4 @@ class StatePoint(object): material_ids.append(summary.materials[bin].id) filter.bins = material_ids - self._with_summary = True + self._summary = summary diff --git a/openmc/summary.py b/openmc/summary.py index 2ae746484..35aa703f5 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -83,7 +83,7 @@ class Summary(object): material = openmc.Material(material_id=material_id, name=name) # Set the Material's density to g/cm3 - this is what is used in OpenMC - material.set_density(density=density, units='g/cm3') + material.set_density(density=density, units='atom/b-cm') # Add all nuclides to the Material for fullname, density in zip(nuclides, nuc_densities): From 8f19a3fdc3a2021090cad02cc644cc82d2882be7 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 27 Sep 2015 20:51:06 -0400 Subject: [PATCH 045/130] Added back in Tally.summation routine and fixed issues with Chi getter in Python API --- openmc/mgxs/mgxs.py | 84 +++++++++++++++++++++++++++++++++-------- openmc/tallies.py | 92 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 159 insertions(+), 17 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f5e37680d..4f0de5049 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -367,7 +367,7 @@ class MultiGroupXS(object): # Override the domain object that loaded from an OpenMC summary file # NOTE: This is necessary for micro cross-sections which require # the isotopic number densities as computed by OpenMC - if self.domain_type == 'cell': + if self.domain_type == 'cell' or self.domain_type == 'distribcell': self.domain = statepoint.summary.get_cell_by_id(self.domain.id) elif self.domain_type == 'universe': self.domain = statepoint.summary.get_universe_by_id(self.domain.id) @@ -478,6 +478,7 @@ class MultiGroupXS(object): densities = self.get_nuclide_densities(nuclides) if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + return xs def get_condensed_xs(self, coarse_groups): @@ -1544,8 +1545,6 @@ class Chi(MultiGroupXS): super(Chi, self).__init__(domain, domain_type, groups, xs_type, name) self._rxn_type = 'chi' - # FIXME: Make this work for micros!!! - def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross section.""" @@ -1556,9 +1555,9 @@ class Chi(MultiGroupXS): # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges - fine_energyout = openmc.Filter('energyout', group_edges) - coarse_energyout = openmc.Filter('energyout', [group_edges[0], group_edges[-1]]) - filters = [[coarse_energyout], [fine_energyout]] + energyout = openmc.Filter('energyout', group_edges) + energyin = openmc.Filter('energy', [group_edges[0], group_edges[-1]]) + filters = [[energyin], [energyout]] # Intialize the Tallies super(Chi, self).create_tallies(scores, filters, keys, estimator) @@ -1566,9 +1565,14 @@ class Chi(MultiGroupXS): def compute_xs(self): """Computes chi fission spectrum using OpenMC tally arithmetic.""" + # Retrieve the fission production tallies nu_fission_in = self.tallies['nu-fission-in'] nu_fission_out = self.tallies['nu-fission-out'] + + # Remove the coarse energy filter to keep it out of tally arithmetic nu_fission_in.remove_filter(nu_fission_in.filters[-1]) + + # Compute chi self._xs_tally = nu_fission_out / nu_fission_in super(Chi, self).compute_xs() @@ -1587,12 +1591,15 @@ class Chi(MultiGroupXS): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest - nuclides : Iterable of str or 'all' - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is '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-section for all nuclides + in the spatial domain. The special string 'sum' will return the sum + across all nuclides weighted by the isotope-specific fission source. xs_type: {'macro' or 'micro'} - Return the macro or micro cross section in units of cm^-1 or barns + This parameter is not relevant for chi but is included here to + mirror the parent MultiGroupXS.get_xs(...) class method value : str A string for the type of value to return - 'mean' (default), @@ -1612,11 +1619,56 @@ class Chi(MultiGroupXS): """ - cv.check_value('xs_type', xs_type, ['macro', 'micro']) + if self.xs_tally is None: + msg = 'Unable to get cross section since it has not been computed' + raise ValueError(msg) - if self.xs_type == 'micro' and xs_type == 'macro': - raise NotImplementedError('Unable to compute macro Chi from micros') + cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) - xs = super(Chi, self).get_xs(groups, subdomains, - nuclides, xs_type, value) - return xs + filters = [] + filter_bins = [] + + # Construct a collection of the domain filter bins + if subdomains != 'all': + cv.check_iterable_type('subdomains', subdomains, Integral) + 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 groups != 'all': + cv.check_iterable_type('groups', groups, Integral) + for group in groups: + filters.append('energyout') + filter_bins.append((self.energy_groups.get_group_bounds(group),)) + + # Construct list of nuclides for all requested nuclides + if nuclides != 'all' and nuclides != ['total']: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = [] + + # Special case for the "macroscopic-from-microscopic" chi + # This is needed since chi is fission source rather than flux-weighted + if nuclides == 'sum' and self.xs_type == 'micro': + + # Retrieve the fission production tallies + nu_fission_in = self.tallies['nu-fission-in'] + nu_fission_out = self.tallies['nu-fission-out'] + + # Sum out all nuclides + nuclides = self.get_all_nuclides() + nu_fission_in = nu_fission_in.summation(nuclides=nuclides) + nu_fission_out = nu_fission_out.summation(nuclides=nuclides) + + # Compute chi and store it as the xs_tally attribute so we can use + # the generic get_xs routine + xs_tally = nu_fission_out / nu_fission_in + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + else: + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=nuclides, value=value) + + return xs \ No newline at end of file diff --git a/openmc/tallies.py b/openmc/tallies.py index 6429d8529..b4501133a 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1,4 +1,4 @@ -from collections import Iterable +from collections import Iterable, defaultdict import copy import os import pickle @@ -11,6 +11,7 @@ import numpy as np from openmc import Mesh, Filter, Trigger, Nuclide from openmc.cross import CrossScore, CrossNuclide, CrossFilter +from openmc.filter import _FILTER_TYPES import openmc.checkvalue as cv from openmc.clean_xml import * @@ -2311,6 +2312,95 @@ class Tally(object): return new_tally + def summation(self, scores=[], filter_type=None, + filter_bins=[], nuclides=[]): + """Build a sliced tally for the specified filter bins, nuclides, scores. + + This method constructs a new tally to encapsulate a subset of the data + represented by this tally. The subset of data to include in the tally + slice is determined by the scores, filter bins and nuclides specified + in the input parameters. + + Parameters + ---------- + scores : list + A list of one or more score strings to sum across + (e.g., ['absorption', 'nu-fission']; default is []) + + filter_type : str + A filter type string (e.g., 'cell', 'energy') corresponding to the + filter bins to sum across + + filter_bins : Iterable of Integral or tuple + A list of the filter bins corresponding to the filters parameter + Each bin in the list is the integer ID for 'material', 'surface', + 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer + for the cell instance ID for 'distribcell Filters. Each bin is a + 2-tuple of floats for 'energy' and 'energyout' filters corresponding + to the energy boundaries of the bin of interest. Each bin is an + (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of + interest. + + nuclides : list + A list of nuclide name strings to sum across + (e.g., ['U-235', 'U-238']; default is []) + + Returns + ------- + Tally + A new tally which encapsulates the sum of data requested. + """ + + # If user did not specify any scores, do not sum across scores + if len(scores) == 0: + scores = [[]] + # Sum across any scores specified by the user + else: + scores = [[score] for score in scores] + + # If user did not specify any nuclides, do not sum across nuclides + if len(nuclides) == 0: + nuclides = [[]] + # Sum across any nuclides specified by the user + else: + nuclides = [[nuclide] for nuclide in nuclides] + + # Sum across any filter bins specified by the user + if filter_type in _FILTER_TYPES: + filter_bins = [[(filter_bin,)] for filter_bin in filter_bins] + filters = [[filter_type]] + # If user did not specify a filter type, do not sum across filter bins + else: + filter_bins = [[]] + filters = [[]] + + # Initialize Tally sum + tally_sum = 0 + + # Iterate over all Tally slice operands in summation + prod = [scores, filters, filter_bins, nuclides] + summed_filters = defaultdict(list) + for scores, filters, filter_bins, nuclides in itertools.product(*prod): + tally_slice = self.get_slice(scores, filters, filter_bins, nuclides) + + # Remove filters summed across to avoid bulky CrossFilters + if filter_type: + filter = tally_slice.find_filter(filter_type) + tally_slice.remove_filter(filter) + summed_filters[filter_type].append(filter) + + # Accumulate this Tally slice into the Tally sum + tally_sum += tally_slice + + # FIXME: test if this works for filter + for filter_type in summed_filters: + filters = summed_filters[filter_type] + for i in range(1, len(filters)): + filters[i] = CrossFilter(filters[i-1], filters[i], '+') + tally_sum.add_filter(filters[-1]) + + return tally_sum + def tile_filter(self, new_filter): """Combines filters, scores and nuclides with another tally. From 25e67baa3222222693e11283838b2d01ebbbc733 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 28 Sep 2015 15:26:01 -0400 Subject: [PATCH 046/130] Made Python API MultiGroupXS object xs_type attribute by_nuclide; nuclides paramter can now be all, sum or a list of nuclides --- openmc/mgxs/mgxs.py | 500 +++++++++++++++++++++++++++----------------- 1 file changed, 309 insertions(+), 191 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 4f0de5049..7123223e0 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -44,6 +44,8 @@ class MultiGroupXS(object): The domain type for spatial homogenization energy_groups : EnergyGroups The energy group structure for energy condensation + by_nuclide : bool + If true, computes multi-group cross sections for each nuclide in domain name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC tallies.xml file. @@ -54,6 +56,8 @@ class MultiGroupXS(object): Name of the multi-group cross section rxn_type : str Reaction type (e.g., 'total', 'nu-fission', etc.) + by_nuclide : bool + If true, computes multi-group cross sections for each nuclide in domain domain : Material or Cell or Universe Domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} @@ -74,11 +78,11 @@ class MultiGroupXS(object): __metaclass__ = abc.ABCMeta def __init__(self, domain=None, domain_type=None, - energy_groups=None, xs_type='macro', name=''): + energy_groups=None, by_nuclide=False, name=''): self._name = '' self._rxn_type = None - self._xs_type = None + self._by_nuclide = None self._domain = None self._domain_type = None self._energy_groups = None @@ -87,7 +91,7 @@ class MultiGroupXS(object): self._xs_tally = None self.name = name - self.xs_type = xs_type + self.by_nuclide = by_nuclide if domain_type is not None: self.domain_type = domain_type if domain is not None: @@ -103,7 +107,7 @@ class MultiGroupXS(object): clone = type(self).__new__(type(self)) clone._name = self.name clone._rxn_type = self.rxn_type - clone._xs_type = self.xs_type + clone._by_nuclide = self.by_nuclide clone._domain = self.domain clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) @@ -131,8 +135,8 @@ class MultiGroupXS(object): return self._rxn_type @property - def xs_type(self): - return self._xs_type + def by_nuclide(self): + return self._by_nuclide @property def domain(self): @@ -169,10 +173,10 @@ class MultiGroupXS(object): cv.check_type('name', name, basestring) self._name = name - @xs_type.setter - def xs_type(self, xs_type): - cv.check_value('xs_type', xs_type, ('macro', 'micro')) - self._xs_type = xs_type + @by_nuclide.setter + def by_nuclide(self, by_nuclide): + cv.check_type('by_nuclide', by_nuclide, bool) + self._by_nuclide = by_nuclide @domain.setter def domain(self, domain): @@ -213,16 +217,18 @@ class MultiGroupXS(object): return nuclides.keys() def get_nuclide_density(self, nuclide): - """Get the atomic number density for a nuclide in the cross section's - spatial domain. + """Get the atomic number density in units of atoms/b-cm for a nuclide + in the cross section's spatial domain. + Paramters + --------- nuclide : str A nuclide name string (e.g., 'U-235') Returns ------- density : Real - The atomic number density for the nuclide of interest + The atomic number density (atom/b-cm) for the nuclide of interest Raises ------ @@ -246,17 +252,22 @@ class MultiGroupXS(object): return density def get_nuclide_densities(self, nuclides='all'): - """Get all atomic number densities in the cross section's spatial domain. + """Get an array of atomic number densities in units of atom/b-cm for all + nuclides in the cross section's spatial domain. - nuclides : Iterable of str or 'all' - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is 'all') + Paramters + --------- + 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 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. Returns ------- densities : ndarray of float - The atomic number densities corresponding to each of the nuclides - in the problem domain + An array of the atomic number densities (atom/b-cm) for each of the + nuclides in the problem domain Raises ------ @@ -268,15 +279,21 @@ class MultiGroupXS(object): if self.domain is None: raise ValueError('Unable to get nuclide densities without a domain') - # If the user requested the densities for all nuclides, get a list of - # all of the nuclide name strings if nuclides == 'all': - nuclides =self.domain.get_all_nuclides() + nuclides = self.domain.get_all_nuclides() - # Loop over each nuclide and find and store its atomic number density - densities = np.zeros(len(nuclides), dtype=np.float) - for i, nuclide in enumerate(nuclides): - densities[i] = self.get_nuclide_density(nuclide) + # Sum the atomic number densities for all nuclides + elif nuclides == 'sum': + nuclides = self.get_all_nuclides() + densities = np.zeros(1, dtype=np.float) + for i, nuclide in enumerate(nuclides): + densities[0] += self.get_nuclide_density(nuclide) + + # Store each nuclide's atomic number density in an array + else: + densities = np.zeros(len(nuclides), dtype=np.float) + for i, nuclide in enumerate(nuclides): + densities[i] = self.get_nuclide_density(nuclide) return densities @@ -323,23 +340,25 @@ class MultiGroupXS(object): for filter in filters: self.tallies[key].add_filter(filter) - # If this is a microscopic cross-section, add all nuclides to tally - if self.xs_type == 'micro' and score != 'flux': + # If this is a by nuclide cross-section, add all nuclides to Tally + if self.by_nuclide and score != 'flux': all_nuclides = self.domain.get_all_nuclides() for nuclide in all_nuclides: self.tallies[key].add_nuclide(nuclide) @abc.abstractmethod def compute_xs(self): - """Computes multi-group cross sections using OpenMC tally arithmetic.""" + """Performs generic cleanup after a subclass' uses tally arithmetic to + compute a multi-group cross section as a derived tally.""" - # If a microscopic cross-section, replace CrossNuclides with originals - if self.xs_type == 'micro': + # If computing xs for each nuclide, replace CrossNuclides with originals + if self.by_nuclide: self.xs_tally._nuclides = [] nuclides = self.domain.get_all_nuclides() for nuclide in nuclides: - self.xs_tally.add_nuclide(nuclide) + self.xs_tally.add_nuclide(openmc.Nuclide(nuclide)) + # Remove NaNs which may have resulted from divide-by-zero operations self._xs_tally._mean = np.nan_to_num(self.xs_tally.mean) self._xs_tally._std_dev = np.nan_to_num(self.xs_tally.std_dev) @@ -350,6 +369,8 @@ class MultiGroupXS(object): This method is needed to compute cross section data from tallies in an OpenMC StatePoint object. + NOTE: The statepoint must first be linked with an OpenMC Summary object. + Parameters ---------- statepoint : openmc.StatePoint @@ -413,9 +434,11 @@ class MultiGroupXS(object): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest - nuclides : Iterable of str or 'all' - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is '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' (default) 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. xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns @@ -462,20 +485,32 @@ class MultiGroupXS(object): filters.append('energy') filter_bins.append((self.energy_groups.get_group_bounds(group),)) - # Construct list of nuclides for all requested nuclides - if nuclides != 'all' and nuclides != ['total']: - cv.check_iterable_type('nuclides', nuclides, basestring) + # Construct a collection of the nuclides to retrieve from the xs tally + # NOTE: We must not override the "nuclides" parameter since it is used + # to retrieve atomic number densities for micro xs + if self.by_nuclide: + if nuclides == 'all' or nuclides == 'sum': + query_nuclides = self.get_all_nuclides() + else: + query_nuclides = nuclides else: - nuclides = [] + query_nuclides = ['total'] - # Query the multi-group cross section tally for the data - xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, - nuclides=nuclides, value=value) + # Use tally summation if user requested the sum for all nuclides + if nuclides == 'sum' or nuclides == ['sum']: + xs_tally = self.xs_tally.summation(nuclides=query_nuclides) + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + else: + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=query_nuclides, value=value) - # If user requested microscopic cross sections from an object with - # microscopic cross sections, divide by atom number densities - if self.xs_type == 'micro' and xs_type == 'micro': - densities = self.get_nuclide_densities(nuclides) + # Divide by atom number densities for microscopic cross sections + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] @@ -559,8 +594,8 @@ class MultiGroupXS(object): """Construct a subdomain-averaged version of this cross section. This is primarily useful for averaging across distribcell instances. - This routine performs spatial homogenization to compute the - scalar flux-weighted average cross section across the subdomains. + This routine performs spatial homogenization to compute the scalar + flux-weighted average cross section across the subdomains. Parameters ---------- @@ -586,13 +621,12 @@ class MultiGroupXS(object): raise ValueError(msg) # Construct a collection of the subdomain filter bins to average across - if subdomains == 'all': - if self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains) - else: - subdomains = [self.domain.id] - else: + if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains) + else: + subdomains = [self.domain.id] # Clone this MultiGroupXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) @@ -644,25 +678,38 @@ class MultiGroupXS(object): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report - nuclides : Iterable of str or 'all' - The nuclides of the cross-sections to include in the report + 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' (default) 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. xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns """ - cv.check_value('xs_type', xs_type, ['macro', 'micro']) - + # Construct a collection of the subdomains to report if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) - if nuclides != 'all': - cv.check_iterable_type('nuclides', nuclides, basestring) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) else: - if self.xs_type == 'micro': - nuclides = self.domain.get_all_nuclides() + subdomains = [self.domain.id] + + # Construct a collection of the nuclides to report + if self.by_nuclide: + if nuclides == 'all': + nuclides = self.get_all_nuclides() + if nuclides == 'sum': + nuclides = ['sum'] else: - nuclides = ['total'] + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + + cv.check_value('xs_type', xs_type, ['macro', 'micro']) # Build header for string with type and domain info string = 'Multi-Group XS\n' @@ -675,12 +722,6 @@ class MultiGroupXS(object): print(string) return - if subdomains == 'all': - if self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) - else: - subdomains = [self.domain.id] - # Loop over all subdomains for subdomain in subdomains: @@ -691,7 +732,7 @@ class MultiGroupXS(object): for nuclide in nuclides: # Build header for nuclide type - if xs_type != 'total': + if nuclide != 'sum': string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) # Build header for cross section type @@ -719,7 +760,8 @@ class MultiGroupXS(object): print(string) - def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', + xs_type='macro', append=True): """Export the multi-group cross section data into an HDF5 binary file. This routine constructs an HDF5 file which stores the multi-group @@ -738,6 +780,9 @@ class MultiGroupXS(object): directory : str Directory for the HDF5 file (default is 'mgxs') + xs_type: {'macro' or 'micro'} + Store the macro or micro cross section in units of cm^-1 or barns + append : boolean If true, appends to an existing HDF5 file with the same filename directory (if one exists) @@ -776,13 +821,15 @@ class MultiGroupXS(object): else: xs_results = h5py.File(filename, 'w') - if self.xs_type == 'micro': + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + + if self.by_nuclide: nuclides = self.domain.get_all_nuclides() densities = np.zeros(len(nuclides), dtype=np.float) for i, nuclide in enumerate(nuclides): densities[i] = nuclides[nuclide][1] else: - nuclides = ['total'] + nuclides = ['sum'] # Create an HDF5 group within the file for the domain domain_type_group = xs_results.require_group(self.domain_type) @@ -813,7 +860,7 @@ class MultiGroupXS(object): # Create a separate HDF5 group for each nuclide for j, nuclide in enumerate(nuclides): - if nuclide != 'total': + if nuclide != 'sum': nuclide_group = rxn_group.require_group(nuclide) nuclide_group.require_dataset('density', dtype=np.float64, data=[densities[j]], shape=(1,)) @@ -822,9 +869,9 @@ class MultiGroupXS(object): # Extract the cross section for this subdomain and nuclide average = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], - xs_type=self.xs_type, value='mean') + xs_type=xs_type, value='mean') std_dev = self.get_xs(subdomains=[subdomain], nuclides=[nuclide], - xs_type=self.xs_type, value='std_dev') + xs_type=xs_type, value='std_dev') average = average.squeeze() std_dev = std_dev.squeeze() @@ -837,7 +884,8 @@ class MultiGroupXS(object): # Close the MultiGroup results HDF5 file xs_results.close() - def export_xs_data(self, filename='mgxs', directory='mgxs', format='csv'): + def export_xs_data(self, filename='mgxs', directory='mgxs', + format='csv', groups='all', xs_type='macro'): """Export the multi-group cross section data to a file. This routine leverages the functionality in the Pandas library to @@ -855,23 +903,18 @@ class MultiGroupXS(object): format : {'csv', 'excel', 'pickle', 'latex'} The format for the exported data file - groups : {'indices' or 'bounds'} - When set to 'indices' (default), integer group indices are inserted - in the energy in/out column(s) of the DataFrame. When it is 'bounds' - the lower and upper energy bounds are used. + groups : Iterable of Integral or 'all' + Energy groups of interest - summary : None or Summary - An optional Summary object to be used to construct columns for - distribcell tally filters (default is None). The geometric - information in the Summary object is embedded into a Multi-index - column with a geometric "path" to each distribcell intance. - NOTE: This option requires the OpenCG Python package. + xs_type: {'macro' or 'micro'} + Store the macro or micro cross section in units of cm^-1 or barns """ cv.check_type('filename', filename, basestring) cv.check_type('directory', directory, basestring) cv.check_value('format', format, ['csv', 'excel', 'pickle', 'latex']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) # Make directory if it does not exist if not os.path.exists(directory): @@ -881,7 +924,7 @@ class MultiGroupXS(object): filename = filename.replace(' ', '-') # Get a Pandas DataFrame for the data - df = self.get_pandas_dataframe() + df = self.get_pandas_dataframe(groups=groups, xs_type=xs_type) # Capitalize column label strings df.columns = df.columns.astype(str) @@ -916,7 +959,8 @@ class MultiGroupXS(object): modified.write(data) modified.write('\n\\end{document}') - def get_pandas_dataframe(self, groups='indices', summary=None): + def get_pandas_dataframe(self, groups='all', nuclides='all', + xs_type='macro', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. This routine leverages the Tally.get_pandas_dataframe(...) routine, but @@ -924,15 +968,23 @@ class MultiGroupXS(object): Parameters ---------- - groups : {'indices' or 'bounds'} - When set to 'indices' (default), integer group indices are inserted - in the energy in/out column(s) of the DataFrame. When it is 'bounds' - the lower and upper energy bounds are used. + groups : Iterable of Integral or 'all' + Energy groups of interest + + 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']). + The special string 'all' (default) 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. + + xs_type: {'macro' or 'micro'} + Return macro or micro cross section in units of cm^-1 or barns summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric - information in the Summary object is embedded into a Multi-index + information in the Summary object is embedded into a multi-index column with a geometric "path" to each distribcell intance. NOTE: This option requires the OpenCG Python package. @@ -954,6 +1006,12 @@ class MultiGroupXS(object): 'cross section has not been computed' raise ValueError(msg) + if groups != 'all': + cv.check_iterable_type('groups', groups, Integral) + if nuclides != 'all' and nuclides != 'sum': + cv.check_iterable_type('nuclides', nuclides, basestring) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + # Get a Pandas DataFrame from the derived xs tally df = self.xs_tally.get_pandas_dataframe(summary=summary) @@ -963,30 +1021,51 @@ class MultiGroupXS(object): else: df = df.drop('score', axis=1) - # Use group indices in place of energy bounds ("1" for fastest group) - if groups == 'indices': + # Rename energy(out) columns + columns = [] + if 'energy [MeV]' in df: + df.rename(columns={'energy [MeV]': 'group in'}, inplace=True) + columns.append('group in') + if 'energyout [MeV]' in df: + df.rename(columns={'energyout [MeV]': 'group out'}, inplace=True) + columns.append('group out') - # Rename the column label for energy in the dataframe - columns = [] - if 'energy [MeV]' in df: - df.rename(columns={'energy [MeV]': 'group in'}, inplace=True) - columns.append('group in') - if 'energyout [MeV]' in df: - df.rename(columns={'energyout [MeV]': 'group out'}, inplace=True) - columns.append('group out') + # Loop over all energy groups and override the bounds with indices + template = '({0:.1e} - {1:.1e})' + bins = self.energy_groups.group_edges + for column in columns: + for i in range(self.num_groups): + group = template.format(bins[i], bins[i+1]) + row_indices = df[column] == group + df.loc[row_indices, column] = self.num_groups - i - # Loop over all energy groups and override the bounds with indices - template = '({0:.1e} - {1:.1e})' - bins = self.energy_groups.group_edges - for column in columns: - for i in range(self.num_groups): - group = template.format(bins[i], bins[i+1]) - row_indices = df[column] == group - df.loc[row_indices, column] = self.num_groups - i + # Select out those groups the user requested + if groups != 'all': + if 'group in' in df: + df = df[df['group in'].isin(groups)] + if 'group out' in df: + df = df[df['group out'].isin(groups)] - # Sort the dataframe by domain type id (e.g., distribcell id) and - # energy groups such that data is from fast to thermal - df.sort([self.domain_type] + columns, inplace=True) + # Sum up cross sections across nuclides if requested + if self.by_nuclide and nuclides == 'sum': + non_nuclide_cols = list(df.columns[df.columns != 'nuclide']) + df = df.groupby(non_nuclide_cols, as_index=False)['nuclide'].sum() + # If the user requested specific nuclides, remove others from dataframe + elif nuclides != 'all' and nuclides != 'sum': + df = df[df.nuclide.isin(nuclides)] + + # If user requested micro cross sections, divide out the atom densities + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') + df['mean'] /= densities + df['std. dev.'] /= densities + + # Sort the dataframe by domain type id (e.g., distribcell id) and + # energy groups such that data is from fast to thermal + df.sort([self.domain_type] + columns, inplace=True) return df @@ -994,8 +1073,8 @@ class MultiGroupXS(object): class TotalXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(TotalXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(TotalXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'total' def create_tallies(self): @@ -1025,8 +1104,8 @@ class TotalXS(MultiGroupXS): class TransportXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(TransportXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(TransportXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'transport' def create_tallies(self): @@ -1064,8 +1143,8 @@ class TransportXS(MultiGroupXS): class AbsorptionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(AbsorptionXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(AbsorptionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'absorption' def create_tallies(self): @@ -1095,8 +1174,8 @@ class AbsorptionXS(MultiGroupXS): class CaptureXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(CaptureXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(CaptureXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'capture' def create_tallies(self): @@ -1127,8 +1206,8 @@ class CaptureXS(MultiGroupXS): class FissionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(FissionXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(FissionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'fission' def create_tallies(self): @@ -1158,8 +1237,8 @@ class FissionXS(MultiGroupXS): class NuFissionXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(NuFissionXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(NuFissionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'nu-fission' def create_tallies(self): @@ -1189,8 +1268,8 @@ class NuFissionXS(MultiGroupXS): class ScatterXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(ScatterXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(ScatterXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'scatter' def create_tallies(self): @@ -1220,8 +1299,8 @@ class ScatterXS(MultiGroupXS): class NuScatterXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(NuScatterXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(NuScatterXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'nu-scatter' def create_tallies(self): @@ -1251,8 +1330,8 @@ class NuScatterXS(MultiGroupXS): class ScatterMatrixXS(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'scatter matrix' def create_tallies(self): @@ -1316,9 +1395,11 @@ class ScatterMatrixXS(MultiGroupXS): subdomains : Iterable of Integral or 'all' Subdomain IDs of interest - nuclides : Iterable of str or 'all' - A list of nuclide name strings - (e.g., ['U-235', 'U-238']; default is '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' (default) 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. xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns @@ -1372,21 +1453,34 @@ class ScatterMatrixXS(MultiGroupXS): filters.append('energyout') filter_bins.append((self.energy_groups.get_group_bounds(group),)) - # Construct list of nuclides for all requested nuclides - if nuclides != 'all' and nuclides != ['total']: - cv.check_iterable_type('nuclides', nuclides, basestring) + # Construct a collection of the nuclides to retrieve from the xs tally + # NOTE: We must not override the "nuclides" parameter since it is used + # to retrieve atomic number densities for micro xs + if self.by_nuclide: + if nuclides == 'all' or nuclides == 'sum': + query_nuclides = self.get_all_nuclides() + else: + query_nuclides = nuclides else: - nuclides = [] + query_nuclides = ['total'] + + # Use tally summation if user requested the sum for all nuclides + if nuclides == 'sum' or nuclides == ['sum']: + xs_tally = self.xs_tally.summation(nuclides=query_nuclides) + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + else: + xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, + nuclides=query_nuclides, value=value) - # Query the multi-group cross section tally for the data - xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, - nuclides=nuclides, value=value) xs = np.nan_to_num(xs) - # If user requested microscopic cross sections from an object with - # microscopic cross sections, divide by atom number densities - if self.xs_type == 'micro' and xs_type == 'micro': - densities = self.get_nuclide_densities(nuclides) + # Divide by atom number densities for microscopic cross sections + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] @@ -1400,25 +1494,38 @@ class ScatterMatrixXS(MultiGroupXS): subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report - nuclides : Iterable of str or 'all' - The nuclides of the cross-sections to include in the report + 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' (default) 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. xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns """ - cv.check_value('xs_type', xs_type, ['macro', 'micro']) - + # Construct a collection of the subdomains to report if subdomains != 'all': cv.check_iterable_type('subdomains', subdomains, Integral) - if nuclides != 'all': - cv.check_iterable_type('nuclides', nuclides, basestring) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) else: - if self.xs_type == 'micro': - nuclides = self.domain.get_all_nuclides() + subdomains = [self.domain.id] + + # Construct a collection of the nuclides to report + if self.by_nuclide: + if nuclides == 'all': + nuclides = self.get_all_nuclides() + if nuclides == 'sum': + nuclides = ['sum'] else: - nuclides = ['total'] + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + + cv.check_value('xs_type', xs_type, ['macro', 'micro']) # Build header for string with type and domain info string = 'Multi-Group XS\n' @@ -1456,7 +1563,7 @@ class ScatterMatrixXS(MultiGroupXS): for nuclide in nuclides: # Build header for nuclide type - if xs_type != 'total': + if xs_type != 'sum': string += '{0: <16}=\t{1}\n'.format('\tNuclide', nuclide) # Build header for cross section type @@ -1491,8 +1598,8 @@ class ScatterMatrixXS(MultiGroupXS): class NuScatterMatrixXS(ScatterMatrixXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'nu-scatter matrix' def create_tallies(self): @@ -1541,8 +1648,8 @@ class NuScatterMatrixXS(ScatterMatrixXS): class Chi(MultiGroupXS): def __init__(self, domain=None, domain_type=None, - groups=None, xs_type='macro', name=''): - super(Chi, self).__init__(domain, domain_type, groups, xs_type, name) + groups=None, by_nuclide=False, name=''): + super(Chi, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'chi' def create_tallies(self): @@ -1593,9 +1700,9 @@ class Chi(MultiGroupXS): 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-section for all nuclides - in the spatial domain. The special string 'sum' will return the sum - across all nuclides weighted by the isotope-specific fission source. + special string 'all' (default) 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. xs_type: {'macro' or 'micro'} This parameter is not relevant for chi but is included here to @@ -1624,6 +1731,7 @@ class Chi(MultiGroupXS): raise ValueError(msg) cv.check_value('value', value, ['mean', 'std_dev', 'rel_err']) + cv.check_value('xs_type', xs_type, ['macro', 'micro']) filters = [] filter_bins = [] @@ -1642,33 +1750,43 @@ class Chi(MultiGroupXS): filters.append('energyout') filter_bins.append((self.energy_groups.get_group_bounds(group),)) - # Construct list of nuclides for all requested nuclides - if nuclides != 'all' and nuclides != ['total']: - cv.check_iterable_type('nuclides', nuclides, basestring) + # If chi 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': + + # Retrieve the fission production tallies + nu_fission_in = self.tallies['nu-fission-in'] + nu_fission_out = self.tallies['nu-fission-out'] + + # Sum out all nuclides + nuclides = self.get_all_nuclides() + nu_fission_in = nu_fission_in.summation(nuclides=nuclides) + nu_fission_out = nu_fission_out.summation(nuclides=nuclides) + + # Compute chi and store it as the xs_tally attribute so we can use + # the generic get_xs routine + xs_tally = nu_fission_out / nu_fission_in + xs = xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) + + # Get chi 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 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 was computed as an average of nuclides in the domain else: - nuclides = [] - - # Special case for the "macroscopic-from-microscopic" chi - # This is needed since chi is fission source rather than flux-weighted - if nuclides == 'sum' and self.xs_type == 'micro': - - # Retrieve the fission production tallies - nu_fission_in = self.tallies['nu-fission-in'] - nu_fission_out = self.tallies['nu-fission-out'] - - # Sum out all nuclides - nuclides = self.get_all_nuclides() - nu_fission_in = nu_fission_in.summation(nuclides=nuclides) - nu_fission_out = nu_fission_out.summation(nuclides=nuclides) - - # Compute chi and store it as the xs_tally attribute so we can use - # the generic get_xs routine - xs_tally = nu_fission_out / nu_fission_in - xs = xs_tally.get_values(filters=filters, - filter_bins=filter_bins, value=value) - - else: - xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, - nuclides=nuclides, value=value) + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, value=value) return xs \ No newline at end of file From 9377823ddc54a1a8cfe8694623ea561631988985 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 28 Sep 2015 21:16:52 -0400 Subject: [PATCH 047/130] Added StatePoint and Summary to Python API __init__.py --- openmc/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openmc/__init__.py b/openmc/__init__.py index d966a155a..397d9f3e2 100644 --- a/openmc/__init__.py +++ b/openmc/__init__.py @@ -12,6 +12,8 @@ from openmc.trigger import * from openmc.tallies import * from openmc.cmfd import * from openmc.executor import * +from openmc.statepoint import * +from openmc.summary import * try: from openmc.opencg_compatible import * From 4451b71f365dda82f77f598a3b263d274ab4d4b7 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 28 Sep 2015 21:23:06 -0400 Subject: [PATCH 048/130] Made Python API MultiGroupXS.get_condensed_xs(...) routine permit same number of energy groups --- openmc/mgxs/mgxs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7123223e0..9b685d37c 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -537,7 +537,8 @@ class MultiGroupXS(object): raise ValueError(msg) cv.check_type('coarse_groups', coarse_groups, EnergyGroups) - cv.check_less_than('coarse groups', coarse_groups.num_groups, self.num_groups) + cv.check_less_than('coarse groups', coarse_groups.num_groups, + self.num_groups, equality=True) cv.check_value('upper coarse energy', coarse_groups.group_edges[-1], [self.energy_groups.group_edges[-1]]) cv.check_value('lower coarse energy', coarse_groups.group_edges[0], From c58c5639de0c0ec6e92ee25e1138706fd168041f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 29 Sep 2015 09:22:51 -0400 Subject: [PATCH 049/130] Python API Executor now waits until process has finished before returning from run_simulation(...) routine even if output=False --- openmc/executor.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/openmc/executor.py b/openmc/executor.py index 54c8a64c1..58cb91246 100644 --- a/openmc/executor.py +++ b/openmc/executor.py @@ -30,14 +30,16 @@ class Executor(object): stdout=subprocess.PIPE) # Capture and re-print OpenMC output in real-time - while (True and output): - line = p.stdout.readline() - print(line, end='') - + while True: # If OpenMC is finished, break loop + line = p.stdout.readline() if not line and p.poll() != None: break + # If user requested output, print to screen + if output: + print(line, end='') + # Return the returncode (integer, zero if no problems encountered) return p.returncode From 731ee261e1305966b351788c061ccca65e4ce055 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 29 Sep 2015 17:34:05 -0400 Subject: [PATCH 050/130] MultiGroupXS.get_xs(...) routine now includes an order_groups parameter with increasing/decreasing options --- openmc/mgxs/mgxs.py | 149 +++++++++++++++++++++++++++++++------------- 1 file changed, 104 insertions(+), 45 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 9b685d37c..ea8fa2f18 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -178,6 +178,20 @@ class MultiGroupXS(object): cv.check_type('by_nuclide', by_nuclide, bool) self._by_nuclide = by_nuclide + @property + def num_nuclides(self): + if self.by_nuclide: + return len(self.get_all_nuclides()) + else: + return 1 + + @property + def nuclides(self): + if self.by_nuclide: + return self.get_all_nuclides() + else: + return 'sum' + @domain.setter def domain(self, domain): cv.check_type('domain', domain, tuple(DOMAINS)) @@ -279,11 +293,8 @@ class MultiGroupXS(object): if self.domain is None: raise ValueError('Unable to get nuclide densities without a domain') - if nuclides == 'all': - nuclides = self.domain.get_all_nuclides() - # Sum the atomic number densities for all nuclides - elif nuclides == 'sum': + if nuclides == 'sum': nuclides = self.get_all_nuclides() densities = np.zeros(1, dtype=np.float) for i, nuclide in enumerate(nuclides): @@ -321,9 +332,9 @@ class MultiGroupXS(object): """ cv.check_iterable_type('scores', scores, basestring) + cv.check_length('scores', scores, len(keys)) cv.check_iterable_type('filters', all_filters, openmc.Filter, 1, 2) cv.check_type('keys', keys, Iterable, basestring) - cv.check_length('scores', scores, len(keys)) cv.check_value('estimator', estimator, ['analog', 'tracklength']) # Create a domain Filter object @@ -419,8 +430,8 @@ class MultiGroupXS(object): filter_bins, tally.nuclides) self.tallies[tally_type] = sp_tally - def get_xs(self, groups='all', subdomains='all', - nuclides='all', xs_type='macro', value='mean'): + def get_xs(self, groups='all', subdomains='all', nuclides='all', + xs_type='macro', order_groups='increasing', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested multi-group @@ -443,6 +454,10 @@ class MultiGroupXS(object): xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing (default) + or decreasing energy groups (decreasing or increasing energies) + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -514,6 +529,25 @@ class MultiGroupXS(object): if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + # 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 = 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, :] + + # Reshape array to original axes (filters, nuclides, scores) + new_shape = (num_subdomains * num_groups,) + xs.shape[2:] + xs = np.reshape(xs, new_shape) + return xs def get_condensed_xs(self, coarse_groups): @@ -748,10 +782,10 @@ class MultiGroupXS(object): 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, 'mean') - rel_err = self.get_xs([group], [subdomain], - [nuclide], xs_type, 'rel_err') * 100 + average = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='mean') + rel_err = self.get_xs([group], [subdomain], [nuclide], + xs_type=xs_type, value='rel_err')*100 average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:.2e} +/- {:1.2e}%'.format(average, rel_err) @@ -1138,7 +1172,7 @@ class TransportXS(MultiGroupXS): self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] - super(TotalXS, self).compute_xs() + super(TransportXS, self).compute_xs() class AbsorptionXS(MultiGroupXS): @@ -1352,7 +1386,7 @@ class ScatterMatrixXS(MultiGroupXS): # Initialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correction=None): + def compute_xs(self, correction='P0'): """Computes the multi-group scattering matrix using OpenMC tally arithmetic. @@ -1379,7 +1413,8 @@ class ScatterMatrixXS(MultiGroupXS): super(ScatterMatrixXS, self).compute_xs() def get_xs(self, in_groups='all', out_groups='all', subdomains='all', - nuclides='all', xs_type='macro', value='mean'): + nuclides='all', order_groups='increasing', + xs_type='macro', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering @@ -1405,6 +1440,9 @@ class ScatterMatrixXS(MultiGroupXS): xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -1485,6 +1523,31 @@ class ScatterMatrixXS(MultiGroupXS): if value == 'mean' or value == 'std_dev': xs /= densities[np.newaxis, :, np.newaxis] + # 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 in_groups == 'all': + num_in_groups = self.num_groups + else: + num_in_groups = len(in_groups) + if out_groups == 'all': + num_out_groups = self.num_groups + else: + num_out_groups = len(out_groups) + num_subdomains = xs.shape[0] / (num_in_groups * num_out_groups) + new_shape = (num_subdomains, num_in_groups, num_out_groups) + new_shape += xs.shape[1:] + xs = np.reshape(xs, new_shape) + + # Reverse energies to align with increasing energy groups + xs = xs[:, ::-1, ::-1, :] + + # Reshape array to original axes (filters, nuclides, scores) + new_shape = (num_subdomains * num_in_groups * num_out_groups,) + new_shape += xs.shape[3:] + xs = np.reshape(xs, new_shape) + return xs def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): @@ -1581,10 +1644,10 @@ class ScatterMatrixXS(MultiGroupXS): string += template.format('', in_group, out_group) average = \ self.get_xs([in_group], [out_group], [subdomain], - [nuclide], xs_type, 'mean') + [nuclide], xs_type=xs_type, value='mean') rel_err = \ self.get_xs([in_group], [out_group], [subdomain], - [nuclide], xs_type, 'rel_err') * 100 + [nuclide], xs_type=xs_type, value='rel_err') * 100 average = np.nan_to_num(average.flatten())[0] rel_err = np.nan_to_num(rel_err.flatten())[0] string += '{:1.2e} +/- {:1.2e}%'.format(average, rel_err) @@ -1607,7 +1670,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): """Construct the OpenMC tallies needed to compute this cross section.""" # Create a list of scores for each Tally to be created - scores = ['flux', 'nu-scatter', 'scatter-P1'] + scores = ['flux', 'scatter', 'scatter-P1'] estimator = 'analog' keys = scores @@ -1620,32 +1683,6 @@ class NuScatterMatrixXS(ScatterMatrixXS): # Intialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) - def compute_xs(self, correction=None): - """Computes the multi-group nu-scattering matrix using OpenMC - tally arithmetic. - - Parameters - ---------- - correction : {'P0' or None} - If 'P0', applies the P0 transport correction to the diagonal of the - scattering matrix - - """ - - # If using P0 correction subtract scatter-P1 from the diagonal - if correction == 'P0': - scatter_p1 = self.tallies['scatter-P1'] - scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) - energy_filter = openmc.Filter(type='energy') - energy_filter.bins = self.energy_groups.group_edges - scatter_p1 = scatter_p1.diagonalize_filter(energy_filter) - rxn_tally = self.tallies['nu-scatter'] - scatter_p1 - else: - rxn_tally = self.tallies['nu-scatter'] - - self._xs_tally = rxn_tally / self.tallies['flux'] - super(ScatterMatrixXS, self).compute_xs() - class Chi(MultiGroupXS): def __init__(self, domain=None, domain_type=None, @@ -1684,8 +1721,8 @@ class Chi(MultiGroupXS): self._xs_tally = nu_fission_out / nu_fission_in super(Chi, self).compute_xs() - def get_xs(self, groups='all', subdomains='all', - nuclides='all', xs_type='macro', value='mean'): + def get_xs(self, groups='all', subdomains='all', nuclides='all', + order_groups='increasing', xs_type='macro', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested multi-group @@ -1705,6 +1742,9 @@ class Chi(MultiGroupXS): all nuclides in the spatial domain. The special string 'sum' will return the cross section summed over all nuclides. + xs_type: {'macro' or 'micro'} + Return the macro or micro cross section in units of cm^-1 or barns + xs_type: {'macro' or 'micro'} This parameter is not relevant for chi but is included here to mirror the parent MultiGroupXS.get_xs(...) class method @@ -1790,4 +1830,23 @@ class Chi(MultiGroupXS): 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 = 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, :] + + # Reshape array to original axes (filters, nuclides, scores) + new_shape = (num_subdomains * num_groups,) + new_shape[2:] + xs = np.reshape(xs, new_shape) + return xs \ No newline at end of file From d075e10fbbd61ee2cd71dd51c2ed7661d14bd5ad Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 13:09:30 -0400 Subject: [PATCH 051/130] Fixed bug in Tally.diagonalize_filter(...) routine for multiple nuclides, scores --- openmc/filter.py | 4 ++-- openmc/tallies.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index 2f09d93f2..5dbf83fdd 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -55,7 +55,6 @@ class Filter(object): self._type = None self._num_bins = 0 self._bins = None - self._bins = None self._mesh = None self._offset = -1 self._stride = None @@ -314,8 +313,9 @@ class Filter(object): Returns ------- - boolean + bool Whether or not the other filter is a subset of this filter + """ if not isinstance(other, Filter): diff --git a/openmc/tallies.py b/openmc/tallies.py index b4501133a..cc6d5fbf5 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2517,16 +2517,16 @@ class Tally(object): if self.sum is not None: new_tally._sum = np.zeros(new_shape, dtype=np.float64) - new_tally._sum[diag_indices, :, :] = self.sum + new_tally._sum[indices, :self.num_nuclides, :self.num_scores] = self.sum if self.sum_sq is not None: new_tally._sum_sq = np.zeros(new_shape, dtype=np.float64) - new_tally._sum_sq[diag_indices, :, :] = self.sum_sq + new_tally._sum_sq[indices, :self.num_nuclides, :self.num_scores] = self.sum_sq if self.mean is not None: new_tally._mean = np.zeros(new_shape, dtype=np.float64) - new_tally._mean[diag_indices, :, :] = self.mean + new_tally._mean[indices, :self.num_nuclides, :self.num_scores] = self.mean if self.std_dev is not None: new_tally._std_dev = np.zeros(new_shape, dtype=np.float64) - new_tally._std_dev[diag_indices, :, :] = self.std_dev + new_tally._std_dev[indices, :self.num_nuclides, :self.num_scores] = self.std_dev # Correct each Filter's stride stride = new_tally.num_nuclides * new_tally.num_score_bins From b548e3dcc10f43f3fd7a407284d3811c8a6dced0 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 14:33:17 -0400 Subject: [PATCH 052/130] Removed unnecessary code from Tally.filter_diagonalize(...) --- openmc/tallies.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/openmc/tallies.py b/openmc/tallies.py index cc6d5fbf5..87af32c42 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2507,13 +2507,6 @@ class Tally(object): new_shape = (num_filter_bins, num_nuclides, num_score_bins) indices = np.arange(0, new_filter.num_bins**2, new_filter.num_bins+1) - diag_indices = np.zeros(self.num_bins, dtype=np.int) - diag_factor = self.num_bins / new_filter.num_bins - - for i in range(diag_factor): - start = i * new_filter.num_bins - end = (i+1) * new_filter.num_bins - diag_indices[start:end] = indices + (i * new_filter.num_bins**2) if self.sum is not None: new_tally._sum = np.zeros(new_shape, dtype=np.float64) From 006358daccbdbd9afe245d15db158e8fcd5d7a00 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 18:16:58 -0400 Subject: [PATCH 053/130] Fixed bug in nuclide number densities for micro xs Pandas DataFrames --- openmc/mgxs/mgxs.py | 102 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 89 insertions(+), 13 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index ea8fa2f18..b39510418 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -297,9 +297,16 @@ class MultiGroupXS(object): if nuclides == 'sum': nuclides = self.get_all_nuclides() densities = np.zeros(1, dtype=np.float) - for i, nuclide in enumerate(nuclides): + for nuclide in nuclides: densities[0] += self.get_nuclide_density(nuclide) + # Sum the atomic number densities for all nuclides + elif nuclides == 'all': + nuclides = self.get_all_nuclides() + densities = np.zeros(self.num_nuclides, dtype=np.float) + for i, nuclide in enumerate(nuclides): + densities[i] += self.get_nuclide_density(nuclide) + # Store each nuclide's atomic number density in an array else: densities = np.zeros(len(nuclides), dtype=np.float) @@ -1048,7 +1055,24 @@ class MultiGroupXS(object): cv.check_value('xs_type', xs_type, ['macro', 'micro']) # Get a Pandas DataFrame from the derived xs tally - df = self.xs_tally.get_pandas_dataframe(summary=summary) + if self.by_nuclide and nuclides == 'sum': + + # Use tally summation to sum across all nuclides + query_nuclides = self.get_all_nuclides() + xs_tally = self.xs_tally.summation(nuclides=query_nuclides) + df = xs_tally.get_pandas_dataframe(summary=summary) + + # Remove nuclide column since it is homogeneous and redundant + df.drop('nuclide', axis=1, inplace=True) + + # If the user requested a specific set of nuclides + elif self.by_nuclide and nuclides != 'all': + xs_tally = self.xs_tally.get_slice(nuclides=nuclides) + df = xs_tally.get_pandas_dataframe(summary=summary) + + # If the user requested all nuclides, keep nuclide column in dataframe + else: + df = self.xs_tally.get_pandas_dataframe(summary=summary) # Remove the score column since it is homogeneous and redundant if summary and self.domain_type == 'distribcell': @@ -1081,22 +1105,15 @@ class MultiGroupXS(object): if 'group out' in df: df = df[df['group out'].isin(groups)] - # Sum up cross sections across nuclides if requested - if self.by_nuclide and nuclides == 'sum': - non_nuclide_cols = list(df.columns[df.columns != 'nuclide']) - df = df.groupby(non_nuclide_cols, as_index=False)['nuclide'].sum() - # If the user requested specific nuclides, remove others from dataframe - elif nuclides != 'all' and nuclides != 'sum': - df = df[df.nuclide.isin(nuclides)] - # If user requested micro cross sections, divide out the atom densities if xs_type == 'micro': if self.by_nuclide: densities = self.get_nuclide_densities(nuclides) else: densities = self.get_nuclide_densities('sum') - df['mean'] /= densities - df['std. dev.'] /= densities + tile_factor = df.shape[0] / len(densities) + df['mean'] /= np.tile(densities, tile_factor) + df['std. dev.'] /= np.tile(densities, tile_factor) # Sort the dataframe by domain type id (e.g., distribcell id) and # energy groups such that data is from fast to thermal @@ -1849,4 +1866,63 @@ class Chi(MultiGroupXS): new_shape = (num_subdomains * num_groups,) + new_shape[2:] xs = np.reshape(xs, new_shape) - return xs \ No newline at end of file + return xs + + def get_pandas_dataframe(self, groups='all', nuclides='all', + xs_type='macro', summary=None): + """Build a Pandas DataFrame for the MultiGroupXS data. + + This routine leverages the Tally.get_pandas_dataframe(...) routine, but + renames the columns with terminology appropriate for cross section data. + + Parameters + ---------- + groups : Iterable of Integral or 'all' + Energy groups of interest + + 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']). + The special string 'all' (default) 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. + + xs_type: {'macro' or 'micro'} + Return macro or micro cross section in units of cm^-1 or barns + + summary : None or Summary + An optional Summary object to be used to construct columns for + distribcell tally filters (default is None). The geometric + information in the Summary object is embedded into a multi-index + column with a geometric "path" to each distribcell intance. + NOTE: This option requires the OpenCG Python package. + + Returns + ------- + pandas.DataFrame + A Pandas DataFrame for the cross section data. + + Raises + ------ + ValueError + When this method is called before the multi-group cross section is + computed from tally data. + + """ + + # Build the dataframe using the parent class routine + df = super(Chi, self).get_pandas_dataframe(groups, nuclides, + xs_type, summary) + + # If user requested micro cross sections, multiply by the atom + # densities to cancel out division made by the parent class routine + if xs_type == 'micro': + if self.by_nuclide: + densities = self.get_nuclide_densities(nuclides) + else: + densities = self.get_nuclide_densities('sum') + tile_factor = df.shape[0] / len(densities) + df['mean'] *= np.tile(densities, tile_factor) + df['std. dev.'] *= np.tile(densities, tile_factor) + + return df \ No newline at end of file From b979a19f73a95cca6ad2d56356cf39b08ad69c06 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 18:19:21 -0400 Subject: [PATCH 054/130] Fixed bug in subdomain avg multi-group xs for single subdomains --- openmc/mgxs/mgxs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index b39510418..14810fc32 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -668,7 +668,7 @@ class MultiGroupXS(object): elif self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains) else: - subdomains = [self.domain.id] + subdomains = [0] # Clone this MultiGroupXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) From 464105a362a262f2e0c1bd9844dcdc6b6c9d1787 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 18:39:13 -0400 Subject: [PATCH 055/130] Fixed issues with MultiGroupXS extraction summed across nuclides --- openmc/mgxs/mgxs.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 14810fc32..c9847fa48 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -511,7 +511,7 @@ class MultiGroupXS(object): # NOTE: We must not override the "nuclides" parameter since it is used # to retrieve atomic number densities for micro xs if self.by_nuclide: - if nuclides == 'all' or nuclides == 'sum': + if nuclides == 'all' or nuclides == 'sum' or nuclides == ['sum']: query_nuclides = self.get_all_nuclides() else: query_nuclides = nuclides @@ -1513,7 +1513,7 @@ class ScatterMatrixXS(MultiGroupXS): # NOTE: We must not override the "nuclides" parameter since it is used # to retrieve atomic number densities for micro xs if self.by_nuclide: - if nuclides == 'all' or nuclides == 'sum': + if nuclides == 'all' or nuclides == 'sum' or nuclides == ['sum']: query_nuclides = self.get_all_nuclides() else: query_nuclides = nuclides @@ -1813,7 +1813,7 @@ class Chi(MultiGroupXS): # Get the sum as the fission source weighted average chi for all # nuclides in the domain - if nuclides == 'sum': + if nuclides == 'sum' or nuclides == ['sum']: # Retrieve the fission production tallies nu_fission_in = self.tallies['nu-fission-in'] @@ -1850,6 +1850,7 @@ class Chi(MultiGroupXS): # 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 From a342a6c20ad5d7cdc8ce037ce90cf98bacce0fd1 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 23:06:36 -0400 Subject: [PATCH 056/130] Now add total nuclide to MultiGroupXS objects if by_nuclide=False --- openmc/mgxs/mgxs.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index c9847fa48..e02a39849 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -363,6 +363,8 @@ class MultiGroupXS(object): all_nuclides = self.domain.get_all_nuclides() for nuclide in all_nuclides: self.tallies[key].add_nuclide(nuclide) + else: + self.tallies[key].add_nuclide('total') @abc.abstractmethod def compute_xs(self): From c1802875620b21ec5c37ddf7c865e7a175481bb8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 30 Sep 2015 23:14:08 -0400 Subject: [PATCH 057/130] Fixed bug in Python API Chi.get_xs(...) when summed across nuclides --- openmc/mgxs/mgxs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e02a39849..07e47e0cf 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1869,6 +1869,7 @@ class Chi(MultiGroupXS): new_shape = (num_subdomains * num_groups,) + new_shape[2:] xs = np.reshape(xs, new_shape) + xs = np.nan_to_num(xs) return xs def get_pandas_dataframe(self, groups='all', nuclides='all', From 65cbcfadb715ce3355944257732ebdfcd6be6333 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 1 Oct 2015 18:26:25 -0400 Subject: [PATCH 058/130] Further refinements to Tally.diagonalize_filter(...) to allow for distribcell filters --- openmc/mgxs/mgxs.py | 7 +++++-- openmc/tallies.py | 15 +++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 07e47e0cf..bc9167dfd 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -614,7 +614,7 @@ class MultiGroupXS(object): # Sum across all applicable fine energy group filters for i, filter in enumerate(tally.filters): - if 'energy' in filter.type and all(filter.bins == fine_edges): + if 'energy' in filter.type and np.all(filter.bins == fine_edges): filter.bins = coarse_groups.group_edges mean = np.add.reduceat(mean, energy_indices, axis=i) std_dev = np.add.reduceat(std_dev**2, energy_indices, axis=i) @@ -1734,9 +1734,12 @@ class Chi(MultiGroupXS): nu_fission_out = self.tallies['nu-fission-out'] # Remove the coarse energy filter to keep it out of tally arithmetic - nu_fission_in.remove_filter(nu_fission_in.filters[-1]) + energy_filter = nu_fission_in.find_filter('energy') + nu_fission_in.remove_filter(energy_filter) # Compute chi + nu_fission_in.add_filter(energy_filter) + self._xs_tally = nu_fission_out / nu_fission_in super(Chi, self).compute_xs() diff --git a/openmc/tallies.py b/openmc/tallies.py index 87af32c42..d15be7983 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2506,20 +2506,27 @@ class Tally(object): num_score_bins = new_tally.num_score_bins new_shape = (num_filter_bins, num_nuclides, num_score_bins) + diag_factor = self.num_filter_bins / new_filter.num_bins indices = np.arange(0, new_filter.num_bins**2, new_filter.num_bins+1) + diag_indices = np.zeros(self.num_filter_bins, dtype=np.int) + + for i in range(diag_factor): + start = i * new_filter.num_bins + end = (i+1) * new_filter.num_bins + diag_indices[start:end] = indices + (i * new_filter.num_bins**2) if self.sum is not None: new_tally._sum = np.zeros(new_shape, dtype=np.float64) - new_tally._sum[indices, :self.num_nuclides, :self.num_scores] = self.sum + new_tally._sum[diag_indices, :self.num_nuclides, :self.num_scores] = self.sum if self.sum_sq is not None: new_tally._sum_sq = np.zeros(new_shape, dtype=np.float64) - new_tally._sum_sq[indices, :self.num_nuclides, :self.num_scores] = self.sum_sq + new_tally._sum_sq[diag_indices, :self.num_nuclides, :self.num_scores] = self.sum_sq if self.mean is not None: new_tally._mean = np.zeros(new_shape, dtype=np.float64) - new_tally._mean[indices, :self.num_nuclides, :self.num_scores] = self.mean + new_tally._mean[diag_indices, :self.num_nuclides, :self.num_scores] = self.mean if self.std_dev is not None: new_tally._std_dev = np.zeros(new_shape, dtype=np.float64) - new_tally._std_dev[indices, :self.num_nuclides, :self.num_scores] = self.std_dev + new_tally._std_dev[diag_indices, :self.num_nuclides, :self.num_scores] = self.std_dev # Correct each Filter's stride stride = new_tally.num_nuclides * new_tally.num_score_bins From e0c2aace2e73367536fa03e153b67a2d038cd2b3 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 2 Oct 2015 17:35:58 -0400 Subject: [PATCH 059/130] Removed debug print statement from OpenCG compatibility module --- openmc/opencg_compatible.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index 9448ff29a..000801ca2 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -467,8 +467,6 @@ def get_opencg_cell(openmc_cell): fill = openmc_cell.fill - print(openmc_cell.fill_type) - if (openmc_cell.fill_type == 'material'): opencg_cell.fill = get_opencg_material(fill) elif (openmc_cell.fill_type == 'universe'): @@ -717,7 +715,7 @@ def get_openmc_cell(opencg_cell): if opencg_cell.translation: translation = np.asarray(opencg_cell.translation, dtype=np.float64) - openmc_cell.setTranslation(translation) + openmc_cell.translation = translation surfaces = opencg_cell.surfaces @@ -894,14 +892,14 @@ def get_opencg_lattice(openmc_lattice): universe_array[z][y][x] = unique_universes[universe_id] opencg_lattice = opencg.Lattice(lattice_id, name) - opencg_lattice.setDimension(dimension) - opencg_lattice.setWidth(pitch) - opencg_lattice.setUniverses(universe_array) + opencg_lattice.dimension = dimension + opencg_lattice.width = pitch + opencg_lattice.universes = universe_array offset = np.array(lower_left, dtype=np.float64) - \ ((np.array(pitch, dtype=np.float64) * np.array(dimension, dtype=np.float64))) / -2.0 - opencg_lattice.setOffset(offset) + opencg_lattice.offset = offset # Add the OpenMC Lattice to the global collection of all OpenMC Lattices OPENMC_LATTICES[lattice_id] = openmc_lattice From 3e0c960648053eb8ab4ff202ba4a6bf59ca46306 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 2 Oct 2015 18:12:35 -0400 Subject: [PATCH 060/130] Fixed multi-group chi calculation --- openmc/mgxs/mgxs.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index bc9167dfd..fd696ff72 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1738,9 +1738,11 @@ class Chi(MultiGroupXS): nu_fission_in.remove_filter(energy_filter) # Compute chi + self._xs_tally = nu_fission_out / nu_fission_in + + # Add the coarse energy filter back to the nu-fission tally nu_fission_in.add_filter(energy_filter) - self._xs_tally = nu_fission_out / nu_fission_in super(Chi, self).compute_xs() def get_xs(self, groups='all', subdomains='all', nuclides='all', From 67971b5c6025a0ea02fac567d91cbd6441ad5b5e Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 00:04:01 -0400 Subject: [PATCH 061/130] Cleaned up docstring comments in filter.py and cross.py --- .../examples/pandas-dataframes.ipynb | 753 ++++++++---------- .../pythonapi/examples/post-processing.ipynb | 82 +- .../pythonapi/examples/tally-arithmetic.ipynb | 297 +++---- openmc/cross.py | 13 +- openmc/filter.py | 20 +- openmc/mesh.py | 2 +- openmc/mgxs/groups.py | 42 +- openmc/statepoint.py | 2 +- 8 files changed, 551 insertions(+), 660 deletions(-) diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index cb63e2ac3..34bb533cd 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -358,7 +358,18 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Run openmc in plotting mode\n", "executor = openmc.Executor()\n", @@ -374,7 +385,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB98JFQMbBgd4EXAAAALKSURBVGje7dpLcqQwDAbgHHE2\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/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDktMjFUMTA6MjU6\nMjYrMDc6MDAKj62JAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA5LTIxVDEwOjI1OjI2KzA3OjAw\ne9IVNQAAAABJRU5ErkJggg==\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAwOjAx\nOjMxLTA0OjAw4140mAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMDowMTozMS0wNDow\nMJIDjCQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -563,8 +574,9 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: b167d70c877c516deca785801b9fa6f53fb0985b\n", - " Date/Time: 2015-09-21 10:27:06\n", + " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", + " Date/Time: 2015-10-03 00:01:31\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -631,20 +643,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.4100E-01 seconds\n", - " Reading cross sections = 1.7900E-01 seconds\n", - " Total time in simulation = 1.2656E+01 seconds\n", - " Time in transport only = 1.2642E+01 seconds\n", - " Time in inactive batches = 2.0300E+00 seconds\n", - " Time in active batches = 1.0626E+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", + " Total time for initialization = 5.9000E-01 seconds\n", + " Reading cross sections = 1.2900E-01 seconds\n", + " Total time in simulation = 1.4684E+01 seconds\n", + " Time in transport only = 1.4653E+01 seconds\n", + " Time in inactive batches = 1.7680E+00 seconds\n", + " Time in active batches = 1.2916E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Sampling source sites = 1.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.3110E+01 seconds\n", - " Calculation Rate (inactive) = 6157.64 neutrons/second\n", - " Calculation Rate (active) = 3529.08 neutrons/second\n", + " Total time elapsed = 1.5286E+01 seconds\n", + " Calculation Rate (inactive) = 7070.14 neutrons/second\n", + " Calculation Rate (active) = 2903.38 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -769,13 +781,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.15044911]]\n", + "[[[ 0.1127471 ]]\n", "\n", - " [[ 0.09149973]]\n", + " [[ 0.06599162]]\n", "\n", - " [[ 0.27611475]]\n", + " [[ 0.25310075]]\n", "\n", - " [[ 0.12476673]]]\n" + " [[ 0.10150973]]]\n" ] } ], @@ -819,16 +831,6 @@ " \n", " \n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -836,229 +838,228 @@ " 1\n", " 1\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000236\n", - " 0.000035\n", + " 0.000224\n", + " 0.000025\n", " \n", " \n", " 1\n", " 1\n", " 1\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.000574\n", - " 0.000086\n", + " 0.000546\n", + " 0.000062\n", " \n", " \n", " 2\n", " 1\n", " 1\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000072\n", - " 0.000006\n", + " 0.000071\n", + " 0.000004\n", " \n", " \n", " 3\n", " 1\n", " 1\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000190\n", - " 0.000014\n", + " 0.000187\n", + " 0.000010\n", " \n", " \n", " 4\n", " 1\n", " 2\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000451\n", - " 0.000058\n", + " 0.000392\n", + " 0.000045\n", " \n", " \n", " 5\n", " 1\n", " 2\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001100\n", - " 0.000141\n", + " 0.000955\n", + " 0.000110\n", " \n", " \n", " 6\n", " 1\n", " 2\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000095\n", - " 0.000006\n", + " 0.000096\n", + " 0.000005\n", " \n", " \n", " 7\n", " 1\n", " 2\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000250\n", - " 0.000016\n", + " 0.000252\n", + " 0.000014\n", " \n", " \n", " 8\n", " 1\n", " 3\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000575\n", - " 0.000080\n", + " 0.000551\n", + " 0.000053\n", " \n", " \n", " 9\n", " 1\n", " 3\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001401\n", - " 0.000194\n", + " 0.001343\n", + " 0.000130\n", " \n", " \n", " 10\n", " 1\n", " 3\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000134\n", - " 0.000011\n", + " 0.000131\n", + " 0.000008\n", " \n", " \n", " 11\n", " 1\n", " 3\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000353\n", - " 0.000028\n", + " 0.000343\n", + " 0.000019\n", " \n", " \n", " 12\n", " 1\n", " 4\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000655\n", - " 0.000071\n", + " 0.000688\n", + " 0.000063\n", " \n", " \n", " 13\n", " 1\n", " 4\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001596\n", - " 0.000174\n", + " 0.001676\n", + " 0.000153\n", " \n", " \n", " 14\n", " 1\n", " 4\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000149\n", - " 0.000009\n", + " 0.000151\n", + " 0.000007\n", " \n", " \n", " 15\n", " 1\n", " 4\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000391\n", - " 0.000023\n", + " 0.000395\n", + " 0.000019\n", " \n", " \n", " 16\n", " 1\n", " 5\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000781\n", - " 0.000078\n", + " 0.000785\n", + " 0.000065\n", " \n", " \n", " 17\n", " 1\n", " 5\n", " 1\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001903\n", - " 0.000191\n", + " 0.001914\n", + " 0.000158\n", " \n", " \n", " 18\n", " 1\n", " 5\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000185\n", - " 0.000009\n", + " 0.000187\n", + " 0.000008\n", " \n", " \n", " 19\n", " 1\n", " 5\n", " 1\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000484\n", - " 0.000024\n", + " 0.000487\n", + " 0.000019\n", " \n", " \n", "\n", "" ], "text/plain": [ - " mesh 1 energy [MeV] score mean std. dev.\n", - " x y z \n", - "bin \n", - "0 1 1 1 0.0e+00 - 6.3e-07 fission 0.000236 0.000035\n", - "1 1 1 1 0.0e+00 - 6.3e-07 nu-fission 0.000574 0.000086\n", - "2 1 1 1 6.3e-07 - 2.0e+01 fission 0.000072 0.000006\n", - "3 1 1 1 6.3e-07 - 2.0e+01 nu-fission 0.000190 0.000014\n", - "4 1 2 1 0.0e+00 - 6.3e-07 fission 0.000451 0.000058\n", - "5 1 2 1 0.0e+00 - 6.3e-07 nu-fission 0.001100 0.000141\n", - "6 1 2 1 6.3e-07 - 2.0e+01 fission 0.000095 0.000006\n", - "7 1 2 1 6.3e-07 - 2.0e+01 nu-fission 0.000250 0.000016\n", - "8 1 3 1 0.0e+00 - 6.3e-07 fission 0.000575 0.000080\n", - "9 1 3 1 0.0e+00 - 6.3e-07 nu-fission 0.001401 0.000194\n", - "10 1 3 1 6.3e-07 - 2.0e+01 fission 0.000134 0.000011\n", - "11 1 3 1 6.3e-07 - 2.0e+01 nu-fission 0.000353 0.000028\n", - "12 1 4 1 0.0e+00 - 6.3e-07 fission 0.000655 0.000071\n", - "13 1 4 1 0.0e+00 - 6.3e-07 nu-fission 0.001596 0.000174\n", - "14 1 4 1 6.3e-07 - 2.0e+01 fission 0.000149 0.000009\n", - "15 1 4 1 6.3e-07 - 2.0e+01 nu-fission 0.000391 0.000023\n", - "16 1 5 1 0.0e+00 - 6.3e-07 fission 0.000781 0.000078\n", - "17 1 5 1 0.0e+00 - 6.3e-07 nu-fission 0.001903 0.000191\n", - "18 1 5 1 6.3e-07 - 2.0e+01 fission 0.000185 0.000009\n", - "19 1 5 1 6.3e-07 - 2.0e+01 nu-fission 0.000484 0.000024" + " mesh 1 energy [MeV] score mean std. dev.\n", + " x y z \n", + "0 1 1 1 (0.0e+00 - 6.3e-07) fission 0.000224 0.000025\n", + "1 1 1 1 (0.0e+00 - 6.3e-07) nu-fission 0.000546 0.000062\n", + "2 1 1 1 (6.3e-07 - 2.0e+01) fission 0.000071 0.000004\n", + "3 1 1 1 (6.3e-07 - 2.0e+01) nu-fission 0.000187 0.000010\n", + "4 1 2 1 (0.0e+00 - 6.3e-07) fission 0.000392 0.000045\n", + "5 1 2 1 (0.0e+00 - 6.3e-07) nu-fission 0.000955 0.000110\n", + "6 1 2 1 (6.3e-07 - 2.0e+01) fission 0.000096 0.000005\n", + "7 1 2 1 (6.3e-07 - 2.0e+01) nu-fission 0.000252 0.000014\n", + "8 1 3 1 (0.0e+00 - 6.3e-07) fission 0.000551 0.000053\n", + "9 1 3 1 (0.0e+00 - 6.3e-07) nu-fission 0.001343 0.000130\n", + "10 1 3 1 (6.3e-07 - 2.0e+01) fission 0.000131 0.000008\n", + "11 1 3 1 (6.3e-07 - 2.0e+01) nu-fission 0.000343 0.000019\n", + "12 1 4 1 (0.0e+00 - 6.3e-07) fission 0.000688 0.000063\n", + "13 1 4 1 (0.0e+00 - 6.3e-07) nu-fission 0.001676 0.000153\n", + "14 1 4 1 (6.3e-07 - 2.0e+01) fission 0.000151 0.000007\n", + "15 1 4 1 (6.3e-07 - 2.0e+01) nu-fission 0.000395 0.000019\n", + "16 1 5 1 (0.0e+00 - 6.3e-07) fission 0.000785 0.000065\n", + "17 1 5 1 (0.0e+00 - 6.3e-07) nu-fission 0.001914 0.000158\n", + "18 1 5 1 (6.3e-07 - 2.0e+01) fission 0.000187 0.000008\n", + "19 1 5 1 (6.3e-07 - 2.0e+01) nu-fission 0.000487 0.000019" ] }, "execution_count": 25, @@ -1083,9 +1084,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nBPCvjMC6bD6xSh4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1108,7 +1109,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1117,9 +1118,9 @@ }, { "data": { - "image/png": "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\nEvx/rHWCrxSlro8AAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAU0AAAEZCAYAAAAT73clAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHuZJREFUeJzt3X+UVdV99/E3DgP+rASmggPTDAhRQKtYgySaOI8xKZIE\nkqdJiauNP9JVaVPSpyu/1NpVIT7VaJ4kPsRKWRETEh9hmVrtpNXgj3aMaSJKBNQIEdSpAjKKgiLI\njxnm+eO7B85c7rn37H3PnXPvmc9rrbO499z9vWefcfzOPvvsszeIiIiIiIiIiIiIiIiIiIiIiIjI\nIHYqsBZ4G/gSsBj4uwq+7xrg+ynUS0SkJi0Fvp11JaqkE7gw60rI4HZU1hWQ1L0XeC7rSgRoSFCm\nFxhS7YqIyODxH0A38C52eT4J+CFwvfu8Cfg3YAfwBvDzSOxVwGYXt4HDLboFwI8j5WYDv3Hf8Z/A\naZHPOoGvAOuAncAKYHhMXS8H/gv4DrAd+AYwwZ3DduB14E7gRFf+x0APsAfYBXzV7Z8B/NLVZy1w\nQczxRESK+k/gC5H3P8ASEsCNWB9ng9vOc/tPBV4Gxrj3v4clMIDrOJw03we8A3zExX8N2AgMdZ+/\nBDzuvuc9WIt3Xkw9LwcOAH+FXfEcDZzivrsRS/CPAt+NxLxE/8vzsViCneneX+TeN8UcU6RiujzP\np7hL2P3AyUAr1mr7L7e/B2sRTsUS1svAi0W+ay7WUn3Exfwf4Bjgg5Eyi4BtWMvvp8BZJeq5FfhH\n4CCwF3jBffcBLPl9l9Itxz8F7gd+5t4/DKwGZpWIEamIkmY+9Ra870t83wI2AQ9iCeoqt38T8DfY\npXgXsBxLroWasYQaPc4rWIuvz7bI63eB40vU85WC96OxS/rNwFtYC3dUifj3Ap/FEnTfdh6HW8wi\nqVPSHFzewfoCT8H6Jr/M4cvd5cCHsETUC9xUJH6L+7zPEKDF7S+mMHmX+/wGrAV7OtaX+Xn6/44W\nln8ZS6zviWwnADeXOa5IMCXNfBoS8/oTwES3720sQfVgfZUXYpfo+7BL5Z4i3/sT4OOubCN202cv\ndiOmXD2SOB7Y7eo2FuszjerCEn6fO4FPAh/D+liPBtro3/IVSZWSZj71Frzuez8ReAi7+/xLrD/x\nUSxZ3ojdsX4Vu5FyTZH432L9iN9zZT+OJa3uEvWIa20W+2whcDZ2af5T4J6CMjdiA/V3YK3kzcAc\n4G+B17CW51fQ77WIiIiIiIiIiIiIiIiI+KrRyQ8+3Nv/sWgRGQjTgScqzAtHQ+/e5MV3ACMrOd5A\nq9GkSa89WVfMArcV+EzAqfypf8jvznm5fKEizuBp75iLeKTo/ocX/IqLFnyg6GdffesW7+M0Pusd\nAusDYsAGBqUUs+BxWDAjJua4gOME/Kfdc69/zLGT/GMAFqwtvr8DG5xazGWex3ATDlSaF3r/d8KC\nf5fO8QZUVuPZZmIz6Wzk8KN8IpITjQm3ejS0fJHUNQC3YjPSbAGeBNoJb7uISI3JIrEMlCzObTo2\nQUSne78Ce6ojYdJsq0KV6suEtnFZV6Em6MdgWrOuQBHHZF2BKsoiaY6l/+w2m4Fzk4e3pVubOjSh\nrSXrKtQEJU3TmnUFiqjXS+8kskia5Wa+cRZEXrehZCmSvsfdljZdnqdrCzadWJ8WrLVZYMHA1EZk\nEJvhtj6LUvpetTTTtRpbu6YVm7l7LnBJBvUQkSpRSzNd3cB8YCV2J30punMukitqaabvAbeJSA4p\naYqIeNCQo0x4Pln1TsAhdgaEvDEi4EDQPOpV75hdnOAd89yJ/s/o/f7kjd4xQ7Z6h5g7A2I+FhAT\n93hlKQGdRM8EnM+5p/vHALTFPEZZyoawQ1WshhNLxfJ8biKSkTxfnmstFRFJ3dCEW4wkc1Mscp+v\nA6Z5xH4Fmw0oOrPSNa78BhJc16ilKSKpq6ClmWRuilnYIoGTsKcJF2MdMuViW4CPAv8d+a4p2LDH\nKdjTig9jq7PGTbOmlqaIpK+ClmZ0booDHJ6bImo2sMy9XgWMAMYkiP0O8PWC75oDLHflO1389FLn\npqQpIqmrYGq4YnNTFK5jH1emuUTsHPe+cGLbZvo/kVjseP3o8lxEUhc35CjBs+4J56bwGl5zDPC3\n2KV5kviSdVDSFJHUxfVpfshtff7vkUWSzE1RWGacK9MYE3sK9tj2ukj5X2P9ocW+a0tM9QFdnotI\nFVTQpxmdm2IYdpOmvaBMO3Cpez0DG3HdVSL2WWA0MN5tm4GzXUw78DlXfryLf6LcuYmIpKoxaWbp\nLrqn2NwU89znS4D7sTvom4DdwBVlYgtFL7+fA+52/3YDX0SX5yIy0IaGJ00oPjfFkoL382O+Mcm8\nFhMK3t/gtkSUNEUkdY0NWdegepQ0RSR1iVuadahW1xvuhe1+EZ8Y5X+Uv/EPOfH8bf5BQPNw/xku\nPs+PvWOOZY93zLms8o6ZsXZd+ULFnBQQszzsUN7851SxWw++RpYvUtTR/iFdnj+7MfZPxeue9yb8\n7zzktVSON6By/PdARDKT48yS41MTkczkOLPk+NREJDM5ziw5PjURyYzunouIeMhxZsnxqYlIZoZn\nXYHqUdIUkfTlOLPk+NREJDM5ziw5PjURyYxuBImIeMhxZsnxqYlIZnKcWXJ8aiKSmRxnlhyfmohk\nRkOOsuA5FUzxyUxL85xICWDf3mEBB4KThr/mHTOcfd4xZ/CMd8y+gN/w3ZPDVko5bmvsctLxPh5w\noH8KiBkfEBPye/dIQAzAm/4hJ/nOqBRwjKJqOLNUSmsEiUj6GhJuxc0ENgAbgatiyixyn68DpiWI\nvd6VXYv92epbTK0VeBdY47bbyp2akqaIpC98ZbUG4FYs+U0BLgEmF5SZBUzEFkG7ElicIPZm4Ezg\nLOA+4LrI923CEu80bI2gkpQ0RSR94UlzOpbEOoEDwApgTkGZ2cAy93oVMAKbP7lU7K5I/PEEdc4Z\nJU0RSV/45flY4JXI+81uX5IyzWVi/wF4GbgM+GZk/3js0rwDOL/0ieW6u1ZEMhOTWTq2QkfpZUVK\nLp8bEbJExrVuuxr4Lrb071asf3MHthb6fcBU+rdM+1HSFJH0xaxn1DbBtj4L1xxRZAuHb9LgXm8u\nU2acK9OYIBbgLmztdID9bgN4CngB6yt9qvgZ6PJcRKoh/PJ8NZa0WoFhwFygvaBMO3Cpez0D2Al0\nlYmdFImfg12OAzRFajLBlXux1KmppSki6QvPLN3AfGAllsyWAuuBee7zJVgrcRZ202c3dpldKhbg\nRuBUoAdrTf6l2/9h4BvYjaOD7jg7q3NqIiJxKsssD7gtaknB+/kesQCfiSn/L25LTElTRNKnqeFE\nRDzkOLPk+NREJDM5ziw1fGqew7A6q1KJI+x959iguF8P/QPvmFOP+613TAM93jGf4l7/43QHTLwB\nvDh+jHfMhOXb/A90oX/IEb1mSWwNiDkrIAbs2RdPQy73DLjB/xhFaZYjEREPOc4sOT41EclMjjNL\njk9NRDKju+ciIh5ynFlyfGoikpkcZ5Ycn5qIZEaX5yIiHmJmOcoDJU0RSV+OM0uOT01EMqPLcxER\nDznOLDk+NRHJTI4zS45PTUQyo8vzLBzwLN/of4iS8zPH2B52W3DU2E7vmC5O8o7Zg/+EIifR5R3z\n+8c94x0D0B3yf9NxARN2bPAP4aaAmOUBMevLFynqvICYrP4Pz/Hdc60RJCLpC18jCGAm9mdvI3BV\nTJlF7vN1wLQEsde7smuBR+i/ANs1rvwG4GPlTi2rpNkJPI0tbvRERnUQkWoZmnA7UgNwK5b8pgCX\nAJMLyswCJmKLoF0JLE4QezNwJjYx333AdW7/FGwBtiku7jbK5MWsGu+9QBvwZkbHF5FqCs8s07EF\n0zrd+xXY6pHRTo3ZwDL3ehUwAhgDjC8RG13H/Hhgu3s9B+tkOeDiNrk6PB5XwSz7NEMWexeRehCe\nWcYCr0TebwbOTVBmLNBcJvYfgM8D72KJERfzeEHM2FIVzLKl+TC2nOYS4PsZ1UNEqiGmv7LjSdtK\n6E14hJBG17Vuuxq4hcNL/3rVIaukeR7wKvC7wENYB+xjGdVFRNIWk1naPmBbn4WLjyiyhf43aVqw\n1l+pMuNcmcYEsQB3YWunx33XluK1N1klzVfdv68D92JN5YKk+Y3I6wvcJiJp6ui0LXXhawStxm7w\ntGIrMM3FbuhEtWPrnq8AZmCDB7uAN0rETsLukIP1Y66JfNddwHewy/JJlLk5nUXSPBZrvO8CjsNu\n8S88stjfD2ilRAajtlbb+iz8eUpfHJ5ZurGEuBLLE0uxGznz3OdLsFbiLOymzW4OX2bHxQLcCJyK\ndQm+APyl2/8ccLf7txv4IjV4eT4aDi1/OBT4f8CDGdRDRKqlsszygNuiCtcKne8RC/CZEse7AY91\nOLNImi8RvoipiNSDGn7WsFI5PjURyUqvnj0XEUmuJ8eZpYZP7W2/4iNG+R8iYB4Ing2IAc49c5V3\nzG851Tumpd/Y3mReYKJ3zPhDD1342Y7/f6czT9xYvlCBF78+xjtmwn8E/EKc4x/CrIAYsBGGvn4v\n8FgVUtIUEfGwb/iwhCX3V7Ue1aCkKSKp62nIb6emkqaIpK4nx7MQK2mKSOqCJpuuE0qaIpK6nhyn\nlvyemYhkRpfnIiIelDRFRDzsI+mQo/qjpCkiqVOfpoiIB12ei4h4UNIUEfGgcZqZeNev+DsBh9gU\nEDMuIAZof+uT3jHnnPhr75hRh1YmTW4rzd4xq45YIDCZKTznHfOTCz7hHfPZe//NO4bT/UOCBE76\nwpcDYtYGHqtCee7TLLkouohIiB4aEm0xZmKLLW4Eroops8h9vg6YliD2W9jSF+uAfwFOdPtbsRba\nGrfdVu7clDRFJHX7GZZoK6IBuBVLflOwhdEmF5SZBUzEFkG7ElicIPZBYCpwJvA8cE3k+zZhiXca\ntkZQSUqaIpK6bhoSbUVMx5JYJ3AAW3FyTkGZ2cAy93oVMAIYUyb2IeBgJCawo01JU0SqoIehibYi\nxkK/mbQ3u31JyjQniAX4AofXPQcYj12adwDnlzu3/PbWikhm4vorn+7YwTMdO0qFllw+N2KIb52c\na7GZj+9y77cCLcAO4GzgPuwyflfcFyhpikjq4pLm1LYmprY1HXq/fOFLhUW2YEmsTwvWYixVZpwr\n01gm9nKsP/QjkX37OTx9/FPYmuiT3OuidHkuIqmroE9zNZa0WoFhwFygvaBMO3Cpez0D2Al0lYmd\nCXwN6+PcG/muJjhUkQku/sVS56aWpoikbj/DQ0O7gfnASiyZLcWGCs1zny/B+iNnYTd9dgNXlIkF\n+B6WSB9y73+F3Sm/AFiI3Tg66I6zs1QFlTRFJHUVPkb5gNuilhS8n+8RC9aCLOYetyWmpCkiqdNj\nlCIiHvL8GGV+z0xEMqNZjjLxpl/xDQED/Gf6h4Q+R7D3ZyO9Y35x+ke9Y06YGju8LD4mfkharJ2M\n8I4B2M4o75hjfSdvgcNPFlc55u0Jjd4xv8MB/wMBQfdWzgo7VKWUNEVEPChpioh42Bc+5KjmKWmK\nSOrU0hQR8ZDnpJnkMcq/Bt5T7YqISH5U8BhlzUvS0hwNPIk9wH4H9ohS0plIRGQQyvM4zSQtzWuB\n92EJ83JsGvkbgFOqVy0RqWcVLndR05LOcnQQ2IbNJNKDXa7/M7buhohIP3lOmkna0P8Lm4bpDeB2\n4KvYjCBHYa3Or1WtdiJSl/YVX/8nF5IkzZHA/wT+u2D/QcB/XVoRyb0892kmObPrSnzmv4i1iORe\nvV56J5HfPwcikhklTRERD/U6BjOJGk6anjPBhEy60xkQsyEgBmwlE09HNe32jlnZ9YfeMbNG31++\nUIE9HOsdA+GzI/l66sLJ3jF7OMY75vytsetvxev2DwH4zYUTvGO20uwZ8QvvYxRTYZ/mTOAWbMmK\n24GbipRZBFwM7MGGQq4pE/st4BPYImovYEtkvOU+uwZb1rcHe5jnwVKV08JqIpK6CoYcNQC3Yslv\nCnAJUPgXcBYwEVvC4kpgcYLYB7Glec8EnscSJa7cXPfvTOA2yuRFJU0RSd1+hiXaipiOLZjWiV1u\nrsBWkIyaDSxzr1dh15ljysQ+hI346Yvpmxl3DrDcle908dNLnZuSpoikroJnz8cCr0Teb3b7kpRp\nThALdine1yfVTP+10eNiDqnhPk0RqVdxfZqvdzzH6x3ri37mJJ3XYohvnZxrsX7Nu0LroKQpIqmL\nG3I0su0MRradcej9+oX3FhbZArRE3rfQvyVYrMw4V6axTOzlWH/oR8p815ailXd0eS4iqavgRtBq\n7AZPKzAMu0nTXlCmHXu0G2xcyk5sXoxSsTOxR77nAHsLvutzrvx4F/9EqXNTS1NEUlfBOM1uYD42\nBWUDsBRYD8xzny/B+iNnYTdtdmPDh0rFAnwPS4wPufe/Ar6IPdV4t/u32+3T5bmIDKwKx2k+4Lao\nJQXv53vEgrUg49zgtkSUNEUkdTHDiXJBSVNEUqfHKEVEPAz2qeFERLxolqNMvOlXPGQShMLRX0kc\nHxADsN0/5OCI4/yDAn4Oq0af6x3TEDjrxC5O8I6ZEjBt6/1M9I4JmYTkjeYm75hRzQG/DMALAed0\nEQ8HHatSSpoiIh7ynDSrObj9DmzA6TORfSOxcVLPY7OODMw8YSIyoPYxPNFWj6qZNH+AjcKPuhpL\nmu8DHnHvRSRn8rwaZTWT5mPAjoJ90SmdlgGfquLxRSQjeU6aA92nORq7ZMf9O3qAjy8iA0DjNKuj\nl5LPeP4o8vpMt4lImn7ZcYBfdXguLZOAxmmmpwubYXkbcDLwWnzRS+M/EpFUfLCtkQ+2NR56/92F\ne0uUTq5eL72TGOip4dqBy9zry4D7Bvj4IjIA1KcZZjlwAdCETUH/98A3sWmY/gxbj+OPq3h8EcnI\nvv2asCPEJTH7L6riMUWkBvR0q09TRCSxnu76vPROQklTRFKnpJmJARjCGXL2YXMt2ComvgIeMh05\no+SaUEWdwC7vmLVM844BWPnWH3rH/I8TO7xjRvGGd8xENnnHrMJ/spNdgbO+tPRbnTYZ//oVm/Tc\nX/eBipLmTOAWbMmK24GbipRZBFwM7MEWTFtTJvazwALgNOD9wFNufyu2JMYG975vGYxYNZw0RaRe\nHewJTi0NwK3YvY8twJPYqJvour+zgInYEhbnAouxBdZKxT4DfJojl80AW2socStASVNE0hd+eT4d\nS2Kd7v0KbAXJaNKMPo69CrsmG4OtJhkXu4GUaAlfEUnf3qHJtiONhX79EJvdviRlmhPEFjMeu7zv\nAM4vV1gtTRFJX9wc1U90wJMdpSJLLp8bMcSnOiVsBVqwyYXOxh64mQrxHf1KmiKSvrikeXabbX1u\nW1hYYguWxPq0cOQaC4VlxrkyjQliC+13G9jNoRewvtKn4gJ0eS4i6etOuB1pNZa0WoFhwFzsZk5U\nO4cnp5iBjU3pShgL/VupTXDoec4JLv7FUqemlqaIpC984qRuYD6wEktmS7EbOfPc50uA+7E76JuA\n3cAVZWLB7pwvwpLkv2N9mBdjj3ovdDU+6I5TcoCgkqaIpK+nougHOHLAaOFQofkesQD3uq3QPW5L\nTElTRNIXtlhpXVDSFJH0pTMtZ01S0hSR9KmlKSLiIcdJM60BomnrhX/1DGnzP0rr7/jHjPEPCY47\nJyCmKSBmon/I0ee8GXAgGHGi/8wl234zwTtm8tTYYXaxtgf88D7Mz71jXqLVOwZgRMCsL75r9Tw6\n5GKoPC/0ck/CMep/NCSN4w0otTRFJH3pr9VWM5Q0RSR9lQ05qmlKmiKSvhz3aSppikj6NORIRMSD\nWpoiIh6UNEVEPChpioh40JAjEREPGnIkIuJBd89FRDyoT1NExIP6NLMwAD/1zoCY0Ak7QlZdbg2I\n2R4QEzDJx97HRwYcCLZtCIgb5x+yfufZ/kEB/zfc0/Qn/kHdgfNTdAbETEy6uGPKKuvTnAncgi1Z\ncTtwU5Eyi7DlKvYAl2PLV5SK/SywADgNeD/9F067BviCq/VfAw+WqpwWVhOR9IUvrNYA3IolvynA\nJcDkgjKzsLm5JgFXAosTxD6DrRNUOC3VFGwBtiku7jbK5EUlTRFJX3jSnI4tmNaJXW6uAOYUlJkN\nLHOvVwEjsGvAUrEbgOeLHG8OsNyV73Tx00udmpKmiKTvQMLtSGOBVyLvN7t9Sco0J4gt1Ez/tdHL\nxtRwn6aI1K19Mfu3dUBXR6nIpJ2w1Zy4uGQdlDRFJH1xQ46a2mzr8/TCwhJbgJbI+xb6twSLlRnn\nyjQmiC13vHFuXyxdnotI+sIvz1djN3hagWHYTZr2gjLtwKXu9QxgJ9CVMBb6t1Lbgc+58uNd/BOl\nTk0tTRFJX/iQo25gPrASuxu+FFgPzHOfLwHux+6gbwJ2A1eUiQW7c74IG2D379gQpYuB54C73b/d\nwBcpc3leqwsa9cI/e4Z8NOAwAQurzQg4DBCwJpYNgBgI5wfEHB94rJDxqgHjNIPG04Y0IZoCxkHW\n8jjNiUdBGgurfTLhcX+qhdVERPQYpYiIFz1GKSLiIW7IUQ4oaYpI+nR5noU3Pcs/HXCM0f4hj7cG\nHAc4rdE/5uGA4zwbENMZEHN6QAzA2oCYvwiIuTMg5qyAmJB7GCGTqgAcHRDzs4zusejyXETEg2Zu\nFxHxoMtzEREPSpoiIh7Upyki4kFDjkREPOjyXETEgy7PRUQ8aMiRiIgHXZ6LiHhQ0hQR8aA+TRER\nDzluaWqNIBGpNTOxOf43AlfFlFnkPl8HTEsQOxJ4CFv7/EFsrXSw9YTexZa/WAPcVq5yNdzS3FXl\n8hD25zDwumPDlICggKUUeNc/ZMOx/jGhM/WUWxuwmB8GxIQsLxIyQ1TIcUaUL1JUa2BcfWkAbgUu\nwlaFfBJb/Gx9pMwsYCK2CNq5wGJsIZpSsVdjSfNmLJle7TawtYaiibcktTRFpJZMx5JYJ9ZCWQHM\nKSgzG1jmXq/C/gyNKRMbjVkGfCq0gtVMmndgy2o+E9m3AGtr9DWFB2rpMBEZUMFr+I4FXom83+z2\nJSnTXCJ2NJaPcP9GJ9Mdj+WjDhIsM1jNy/MfAN8DfhTZ1wt8x20ikltxXV8/d1uspH1SSWZXHhLz\nfb2R/VuBFmAHcDZwHzCVEv191Uyaj1G8F6aulusUkRBxff8fcFufGwoLbMGSWJ8WjuwJLywzzpVp\nLLJ/i3vdhV3CbwNOBl5z+/e7DeAp4AWsr/SpmBPIpE/zS9gdr6WEd4mLSE17N+F2hNVY0moFhgFz\nsZs5Ue3Ape71DOx2XFeZ2HbgMvf6MqxFCdCE3UACmODiXyx1ZgN993wx8A33+nrg28CfFS+6MvL6\nFOxmmYikalsHdHVU4YuDR7d3A/OxBNCANa7WA/Pc50uA+7E76JuA3cAVZWIBvgncjeWbTuCP3f4P\nYznpAHDQHafkmIhqXyq3Aj8FzvD8rNfyqY/JnuUBjgmIOSkgBqCGhxydFjDkqMk/BAgbcnROQEzI\nUKC9A3ScWh5ydOcQqDwv9MJLCYuOT+N4A2qgW5onA6+615+m/511EcmN/D5HWc2kuRy4AGuTvAJc\nB7RhC6X2Yn+K5sUFi0g9y+9zlNVMmpcU2XdHFY8nIjVDLU0REQ8Bfet1QklTRKpAl+cZeNuz/BsB\nx2gMiOkqX6SokAlFQv5aB4wI2BDyaxDyswM4wT+kc1zAcToDYkJ+DuMDYkJGRQC/GKDfh1To8lxE\nxINamiIiHtTSFBHxoJamiIgHtTRFRDxoyJGIiAe1NEVEPKhPU0TEQ35bmnW4sFpn1hWoAWuzrkCN\neDTrCtSIkstHZKQ74VZ/lDTrkpKmUdI0j2VdgSKCF1arebo8F5EqqM9WZBJKmiJSBfkdclSr08x3\nYBMYi8jAehSbLLwSPjOS7ABGVng8EREREREREZFaNRPYAGwErsq4LlnqBJ4G1gBPZFuVAXMHNvtz\ndPXSkcBDwPPAg4QvjFtPiv0cFmALI69x28yBr5bUogZsYfhWbMrwtYQtdJ4HLzH4Os4/BEyjf7K4\nGfi6e30V8M2BrlQGiv0crgO+nE11Bqd6Gdw+HUuandiI2BXAnCwrlLFaHfVQLY9hd1mjZgPL3Otl\nwKcGtEbZKPZzgMH3+5CpekmaY7G10/tsdvsGo17gYWA18OcZ1yVLozm8YFOXez9YfQlYByxlcHRT\nZKpekmbgSlS5dB52iXYx8FfYJdtg18vg/R1ZjK3udhbwKvDtbKuTf/WSNLcALZH3LVhrczB61f37\nOnAv1nUxGHUBY9zrk4HXMqxLll7j8B+N2xm8vw8Dpl6S5mpgEnYjaBgwF2jPskIZOZbDa+AeB3yM\n/jcFBpN24DL3+jLgvgzrkqWTI68/zeD9fZAiLgZ+i90QuibjumRlPDZyYC3wLIPn57Ac2Arsx/q2\nr8BGEDzM4BpyVPhz+ALwI2wI2jrsD8dg7tsVERERERERERERERERERERERERERERERERH+/HnkoZ\njj3i+SwwJdMaiVSB5uGTNF0PHA0cgz3md1O21RERqW2NWGvzcfQHWXKqXmY5kvrQhF2aH4+1NkVy\nR60BSVM7cBcwAZuy7EvZVkdEpHZdCvzEvT4Ku0Rvy6w2IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi\nefX/AdmeWI23zkQnAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1129,7 +1130,7 @@ "source": [ "# Extract thermal nu-fission rates from pandas\n", "fiss = df[df['score'] == 'nu-fission']\n", - "fiss = fiss[fiss['energy [MeV]'] == '0.0e+00 - 6.3e-07']\n", + "fiss = fiss[fiss['energy [MeV]'] == '(0.0e+00 - 6.3e-07)']\n", "\n", "# Extract mean and reshape as 2D NumPy arrays\n", "mean = fiss['mean'].reshape((17,17))\n", @@ -1200,14 +1201,6 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -1215,170 +1208,169 @@ " 10000\n", " U-235\n", " scatter-Y0,0\n", - " 0.036453\n", - " 0.001219\n", + " 0.038330\n", + " 0.001119\n", " \n", " \n", " 1\n", " 10000\n", " U-235\n", " scatter-Y1,-1\n", - " 0.000302\n", - " 0.000314\n", + " 0.000008\n", + " 0.000341\n", " \n", " \n", " 2\n", " 10000\n", " U-235\n", " scatter-Y1,0\n", - " -0.000006\n", - " 0.000347\n", + " -0.000342\n", + " 0.000342\n", " \n", " \n", " 3\n", " 10000\n", " U-235\n", " scatter-Y1,1\n", - " 0.000244\n", - " 0.000286\n", + " 0.000201\n", + " 0.000262\n", " \n", " \n", " 4\n", " 10000\n", " U-235\n", " scatter-Y2,-2\n", - " 0.000184\n", - " 0.000211\n", + " 0.000136\n", + " 0.000152\n", " \n", " \n", " 5\n", " 10000\n", " U-235\n", " scatter-Y2,-1\n", - " 0.000067\n", - " 0.000173\n", + " 0.000042\n", + " 0.000131\n", " \n", " \n", " 6\n", " 10000\n", " U-235\n", " scatter-Y2,0\n", - " 0.000353\n", - " 0.000210\n", + " 0.000303\n", + " 0.000185\n", " \n", " \n", " 7\n", " 10000\n", " U-235\n", " scatter-Y2,1\n", - " -0.000266\n", - " 0.000263\n", + " -0.000407\n", + " 0.000184\n", " \n", " \n", " 8\n", " 10000\n", " U-235\n", " scatter-Y2,2\n", - " -0.000246\n", - " 0.000153\n", + " -0.000145\n", + " 0.000120\n", " \n", " \n", " 9\n", " 10000\n", " U-238\n", " scatter-Y0,0\n", - " 2.315893\n", - " 0.008243\n", + " 2.319322\n", + " 0.006166\n", " \n", " \n", " 10\n", " 10000\n", " U-238\n", " scatter-Y1,-1\n", - " -0.022028\n", - " 0.002316\n", + " -0.023638\n", + " 0.001940\n", " \n", " \n", " 11\n", " 10000\n", " U-238\n", " scatter-Y1,0\n", - " -0.003426\n", - " 0.002651\n", + " -0.003463\n", + " 0.001892\n", " \n", " \n", " 12\n", " 10000\n", " U-238\n", " scatter-Y1,1\n", - " 0.026620\n", - " 0.002084\n", + " 0.025099\n", + " 0.002270\n", " \n", " \n", " 13\n", " 10000\n", " U-238\n", " scatter-Y2,-2\n", - " -0.001295\n", - " 0.001627\n", + " -0.000617\n", + " 0.001197\n", " \n", " \n", " 14\n", " 10000\n", " U-238\n", " scatter-Y2,-1\n", - " 0.000759\n", - " 0.001426\n", + " 0.002549\n", + " 0.001187\n", " \n", " \n", " 15\n", " 10000\n", " U-238\n", " scatter-Y2,0\n", - " 0.005513\n", - " 0.001983\n", + " 0.007121\n", + " 0.001646\n", " \n", " \n", " 16\n", " 10000\n", " U-238\n", " scatter-Y2,1\n", - " 0.000431\n", - " 0.001862\n", + " -0.000058\n", + " 0.001323\n", " \n", " \n", " 17\n", " 10000\n", " U-238\n", " scatter-Y2,2\n", - " -0.001962\n", - " 0.001222\n", + " -0.002235\n", + " 0.000867\n", " \n", " \n", "\n", "" ], "text/plain": [ - " cell nuclide score mean std. dev.\n", - "bin \n", - "0 10000 U-235 scatter-Y0,0 0.036453 0.001219\n", - "1 10000 U-235 scatter-Y1,-1 0.000302 0.000314\n", - "2 10000 U-235 scatter-Y1,0 -0.000006 0.000347\n", - "3 10000 U-235 scatter-Y1,1 0.000244 0.000286\n", - "4 10000 U-235 scatter-Y2,-2 0.000184 0.000211\n", - "5 10000 U-235 scatter-Y2,-1 0.000067 0.000173\n", - "6 10000 U-235 scatter-Y2,0 0.000353 0.000210\n", - "7 10000 U-235 scatter-Y2,1 -0.000266 0.000263\n", - "8 10000 U-235 scatter-Y2,2 -0.000246 0.000153\n", - "9 10000 U-238 scatter-Y0,0 2.315893 0.008243\n", - "10 10000 U-238 scatter-Y1,-1 -0.022028 0.002316\n", - "11 10000 U-238 scatter-Y1,0 -0.003426 0.002651\n", - "12 10000 U-238 scatter-Y1,1 0.026620 0.002084\n", - "13 10000 U-238 scatter-Y2,-2 -0.001295 0.001627\n", - "14 10000 U-238 scatter-Y2,-1 0.000759 0.001426\n", - "15 10000 U-238 scatter-Y2,0 0.005513 0.001983\n", - "16 10000 U-238 scatter-Y2,1 0.000431 0.001862\n", - "17 10000 U-238 scatter-Y2,2 -0.001962 0.001222" + " cell nuclide score mean std. dev.\n", + "0 10000 U-235 scatter-Y0,0 0.038330 0.001119\n", + "1 10000 U-235 scatter-Y1,-1 0.000008 0.000341\n", + "2 10000 U-235 scatter-Y1,0 -0.000342 0.000342\n", + "3 10000 U-235 scatter-Y1,1 0.000201 0.000262\n", + "4 10000 U-235 scatter-Y2,-2 0.000136 0.000152\n", + "5 10000 U-235 scatter-Y2,-1 0.000042 0.000131\n", + "6 10000 U-235 scatter-Y2,0 0.000303 0.000185\n", + "7 10000 U-235 scatter-Y2,1 -0.000407 0.000184\n", + "8 10000 U-235 scatter-Y2,2 -0.000145 0.000120\n", + "9 10000 U-238 scatter-Y0,0 2.319322 0.006166\n", + "10 10000 U-238 scatter-Y1,-1 -0.023638 0.001940\n", + "11 10000 U-238 scatter-Y1,0 -0.003463 0.001892\n", + "12 10000 U-238 scatter-Y1,1 0.025099 0.002270\n", + "13 10000 U-238 scatter-Y2,-2 -0.000617 0.001197\n", + "14 10000 U-238 scatter-Y2,-1 0.002549 0.001187\n", + "15 10000 U-238 scatter-Y2,0 0.007121 0.001646\n", + "16 10000 U-238 scatter-Y2,1 -0.000058 0.001323\n", + "17 10000 U-238 scatter-Y2,2 -0.002235 0.000867" ] }, "execution_count": 29, @@ -1412,8 +1404,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.00122163 0.00824348]\n", - " [ 0.00015287 0.00121882]]]\n" + "[[[ 0.00086668 0.0061658 ]\n", + " [ 0.00011981 0.00111862]]]\n" ] } ], @@ -1481,25 +1473,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.0400168 ]]\n", - "\n", - " [[ 0.05233031]]\n", - "\n", - " [[ 0.03819276]]\n", - "\n", - " [[ 0.02900783]]\n", - "\n", - " [[ 0.03176394]]\n", - "\n", - " [[ 0.03046477]]\n", - "\n", - " [[ 0.03864163]]\n", - "\n", - " [[ 0.02455132]]\n", - "\n", - " [[ 0.02282716]]\n", - "\n", - " [[ 0.02162945]]]\n" + "[[[ 0.03658762]]]\n" ] } ], @@ -1507,7 +1481,7 @@ "# Get the relative error for the scattering reaction rates in\n", "# the first 30 distribcell instances \n", "data = tally.get_values(scores=['scatter'], filters=['distribcell'],\n", - " filter_bins=[range(10)], value='rel_err')\n", + " filter_bins=[(i,) for i in range(10)], value='rel_err')\n", "print(data)" ] }, @@ -1538,154 +1512,147 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 558\n", " 279\n", " absorption\n", - " 0.000085\n", + " 0.000081\n", " 0.000008\n", " \n", " \n", " 559\n", " 279\n", " scatter\n", - " 0.013429\n", - " 0.000449\n", + " 0.013109\n", + " 0.000358\n", " \n", " \n", " 560\n", " 280\n", " absorption\n", - " 0.000095\n", - " 0.000014\n", + " 0.000088\n", + " 0.000010\n", " \n", " \n", " 561\n", " 280\n", " scatter\n", - " 0.014770\n", - " 0.000783\n", + " 0.014395\n", + " 0.000586\n", " \n", " \n", " 562\n", " 281\n", " absorption\n", - " 0.000107\n", - " 0.000013\n", + " 0.000097\n", + " 0.000010\n", " \n", " \n", " 563\n", " 281\n", " scatter\n", - " 0.015044\n", - " 0.000605\n", + " 0.014637\n", + " 0.000427\n", " \n", " \n", " 564\n", " 282\n", " absorption\n", - " 0.000110\n", - " 0.000010\n", + " 0.000107\n", + " 0.000009\n", " \n", " \n", " 565\n", " 282\n", " scatter\n", - " 0.016090\n", - " 0.000795\n", + " 0.015683\n", + " 0.000552\n", " \n", " \n", " 566\n", " 283\n", " absorption\n", - " 0.000121\n", - " 0.000012\n", + " 0.000110\n", + " 0.000009\n", " \n", " \n", " 567\n", " 283\n", " scatter\n", - " 0.017010\n", - " 0.000793\n", + " 0.016293\n", + " 0.000627\n", " \n", " \n", " 568\n", " 284\n", " absorption\n", - " 0.000110\n", + " 0.000111\n", " 0.000007\n", " \n", " \n", " 569\n", " 284\n", " scatter\n", - " 0.017010\n", - " 0.000430\n", + " 0.017032\n", + " 0.000445\n", " \n", " \n", " 570\n", " 285\n", " absorption\n", " 0.000112\n", - " 0.000007\n", + " 0.000006\n", " \n", " \n", " 571\n", " 285\n", " scatter\n", - " 0.017499\n", - " 0.000615\n", + " 0.017666\n", + " 0.000425\n", " \n", " \n", " 572\n", " 286\n", " absorption\n", - " 0.000127\n", - " 0.000016\n", + " 0.000123\n", + " 0.000011\n", " \n", " \n", " 573\n", " 286\n", " scatter\n", - " 0.017716\n", - " 0.000690\n", + " 0.017706\n", + " 0.000597\n", " \n", " \n", " 574\n", " 287\n", " absorption\n", - " 0.000119\n", - " 0.000013\n", + " 0.000108\n", + " 0.000011\n", " \n", " \n", " 575\n", " 287\n", " scatter\n", - " 0.018041\n", - " 0.000702\n", + " 0.017339\n", + " 0.000664\n", " \n", " \n", " 576\n", " 288\n", " absorption\n", - " 0.000125\n", - " 0.000013\n", + " 0.000129\n", + " 0.000011\n", " \n", " \n", " 577\n", " 288\n", " scatter\n", - " 0.018212\n", - " 0.000715\n", + " 0.018452\n", + " 0.000523\n", " \n", " \n", "\n", @@ -1693,27 +1660,26 @@ ], "text/plain": [ " distribcell score mean std. dev.\n", - "bin \n", - "558 279 absorption 0.000085 0.000008\n", - "559 279 scatter 0.013429 0.000449\n", - "560 280 absorption 0.000095 0.000014\n", - "561 280 scatter 0.014770 0.000783\n", - "562 281 absorption 0.000107 0.000013\n", - "563 281 scatter 0.015044 0.000605\n", - "564 282 absorption 0.000110 0.000010\n", - "565 282 scatter 0.016090 0.000795\n", - "566 283 absorption 0.000121 0.000012\n", - "567 283 scatter 0.017010 0.000793\n", - "568 284 absorption 0.000110 0.000007\n", - "569 284 scatter 0.017010 0.000430\n", - "570 285 absorption 0.000112 0.000007\n", - "571 285 scatter 0.017499 0.000615\n", - "572 286 absorption 0.000127 0.000016\n", - "573 286 scatter 0.017716 0.000690\n", - "574 287 absorption 0.000119 0.000013\n", - "575 287 scatter 0.018041 0.000702\n", - "576 288 absorption 0.000125 0.000013\n", - "577 288 scatter 0.018212 0.000715" + "558 279 absorption 0.000081 0.000008\n", + "559 279 scatter 0.013109 0.000358\n", + "560 280 absorption 0.000088 0.000010\n", + "561 280 scatter 0.014395 0.000586\n", + "562 281 absorption 0.000097 0.000010\n", + "563 281 scatter 0.014637 0.000427\n", + "564 282 absorption 0.000107 0.000009\n", + "565 282 scatter 0.015683 0.000552\n", + "566 283 absorption 0.000110 0.000009\n", + "567 283 scatter 0.016293 0.000627\n", + "568 284 absorption 0.000111 0.000007\n", + "569 284 scatter 0.017032 0.000445\n", + "570 285 absorption 0.000112 0.000006\n", + "571 285 scatter 0.017666 0.000425\n", + "572 286 absorption 0.000123 0.000011\n", + "573 286 scatter 0.017706 0.000597\n", + "574 287 absorption 0.000108 0.000011\n", + "575 287 scatter 0.017339 0.000664\n", + "576 288 absorption 0.000129 0.000011\n", + "577 288 scatter 0.018452 0.000523" ] }, "execution_count": 33, @@ -1786,21 +1752,6 @@ " \n", " \n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -1815,8 +1766,8 @@ " 10000\n", " 0\n", " absorption\n", - " 0.000136\n", - " 0.000017\n", + " 0.000131\n", + " 0.000014\n", " \n", " \n", " 1\n", @@ -1830,8 +1781,8 @@ " 10000\n", " 0\n", " scatter\n", - " 0.018504\n", - " 0.000740\n", + " 0.018582\n", + " 0.000680\n", " \n", " \n", " 2\n", @@ -1845,8 +1796,8 @@ " 10000\n", " 1\n", " absorption\n", - " 0.000231\n", - " 0.000031\n", + " 0.000220\n", + " 0.000023\n", " \n", " \n", " 3\n", @@ -1860,8 +1811,8 @@ " 10000\n", " 1\n", " scatter\n", - " 0.029149\n", - " 0.001525\n", + " 0.028711\n", + " 0.001186\n", " \n", " \n", " 4\n", @@ -1875,8 +1826,8 @@ " 10000\n", " 2\n", " absorption\n", - " 0.000306\n", - " 0.000032\n", + " 0.000295\n", + " 0.000022\n", " \n", " \n", " 5\n", @@ -1890,8 +1841,8 @@ " 10000\n", " 2\n", " scatter\n", - " 0.039770\n", - " 0.001519\n", + " 0.038782\n", + " 0.001084\n", " \n", " \n", " 6\n", @@ -1905,8 +1856,8 @@ " 10000\n", " 3\n", " absorption\n", - " 0.000339\n", - " 0.000028\n", + " 0.000331\n", + " 0.000022\n", " \n", " \n", " 7\n", @@ -1920,8 +1871,8 @@ " 10000\n", " 3\n", " scatter\n", - " 0.046708\n", - " 0.001355\n", + " 0.045772\n", + " 0.001084\n", " \n", " \n", " 8\n", @@ -1935,8 +1886,8 @@ " 10000\n", " 4\n", " absorption\n", - " 0.000433\n", - " 0.000031\n", + " 0.000419\n", + " 0.000026\n", " \n", " \n", " 9\n", @@ -1950,8 +1901,8 @@ " 10000\n", " 4\n", " scatter\n", - " 0.056359\n", - " 0.001790\n", + " 0.055975\n", + " 0.001344\n", " \n", " \n", " 10\n", @@ -1965,8 +1916,8 @@ " 10000\n", " 5\n", " absorption\n", - " 0.000538\n", - " 0.000028\n", + " 0.000514\n", + " 0.000024\n", " \n", " \n", " 11\n", @@ -1980,8 +1931,8 @@ " 10000\n", " 5\n", " scatter\n", - " 0.064943\n", - " 0.001978\n", + " 0.063289\n", + " 0.001605\n", " \n", " \n", " 12\n", @@ -1995,8 +1946,8 @@ " 10000\n", " 6\n", " absorption\n", - " 0.000588\n", - " 0.000028\n", + " 0.000591\n", + " 0.000027\n", " \n", " \n", " 13\n", @@ -2010,8 +1961,8 @@ " 10000\n", " 6\n", " scatter\n", - " 0.070231\n", - " 0.002714\n", + " 0.071011\n", + " 0.002058\n", " \n", " \n", " 14\n", @@ -2025,8 +1976,8 @@ " 10000\n", " 7\n", " absorption\n", - " 0.000670\n", - " 0.000041\n", + " 0.000671\n", + " 0.000036\n", " \n", " \n", " 15\n", @@ -2040,8 +1991,8 @@ " 10000\n", " 7\n", " scatter\n", - " 0.075852\n", - " 0.001862\n", + " 0.077891\n", + " 0.001952\n", " \n", " \n", " 16\n", @@ -2055,8 +2006,8 @@ " 10000\n", " 8\n", " absorption\n", - " 0.000745\n", - " 0.000039\n", + " 0.000721\n", + " 0.000031\n", " \n", " \n", " 17\n", @@ -2070,8 +2021,8 @@ " 10000\n", " 8\n", " scatter\n", - " 0.086234\n", - " 0.001968\n", + " 0.086393\n", + " 0.001722\n", " \n", " \n", " 18\n", @@ -2085,8 +2036,8 @@ " 10000\n", " 9\n", " absorption\n", - " 0.000731\n", - " 0.000039\n", + " 0.000748\n", + " 0.000033\n", " \n", " \n", " 19\n", @@ -2100,63 +2051,61 @@ " 10000\n", " 9\n", " scatter\n", - " 0.090448\n", - " 0.001956\n", + " 0.090861\n", + " 0.001669\n", " \n", " \n", "\n", "" ], "text/plain": [ - " level 1 level 2 level 3 distribcell score \\\n", - " cell univ lat cell univ \n", - " id id id x y z id id \n", - "bin \n", - "0 10003 0 10001 0 0 0 10002 10000 0 absorption \n", - "1 10003 0 10001 0 0 0 10002 10000 0 scatter \n", - "2 10003 0 10001 1 0 0 10002 10000 1 absorption \n", - "3 10003 0 10001 1 0 0 10002 10000 1 scatter \n", - "4 10003 0 10001 2 0 0 10002 10000 2 absorption \n", - "5 10003 0 10001 2 0 0 10002 10000 2 scatter \n", - "6 10003 0 10001 3 0 0 10002 10000 3 absorption \n", - "7 10003 0 10001 3 0 0 10002 10000 3 scatter \n", - "8 10003 0 10001 4 0 0 10002 10000 4 absorption \n", - "9 10003 0 10001 4 0 0 10002 10000 4 scatter \n", - "10 10003 0 10001 5 0 0 10002 10000 5 absorption \n", - "11 10003 0 10001 5 0 0 10002 10000 5 scatter \n", - "12 10003 0 10001 6 0 0 10002 10000 6 absorption \n", - "13 10003 0 10001 6 0 0 10002 10000 6 scatter \n", - "14 10003 0 10001 7 0 0 10002 10000 7 absorption \n", - "15 10003 0 10001 7 0 0 10002 10000 7 scatter \n", - "16 10003 0 10001 8 0 0 10002 10000 8 absorption \n", - "17 10003 0 10001 8 0 0 10002 10000 8 scatter \n", - "18 10003 0 10001 9 0 0 10002 10000 9 absorption \n", - "19 10003 0 10001 9 0 0 10002 10000 9 scatter \n", + " level 1 level 2 level 3 distribcell score \\\n", + " cell univ lat cell univ \n", + " id id id x y z id id \n", + "0 10003 0 10001 0 0 0 10002 10000 0 absorption \n", + "1 10003 0 10001 0 0 0 10002 10000 0 scatter \n", + "2 10003 0 10001 1 0 0 10002 10000 1 absorption \n", + "3 10003 0 10001 1 0 0 10002 10000 1 scatter \n", + "4 10003 0 10001 2 0 0 10002 10000 2 absorption \n", + "5 10003 0 10001 2 0 0 10002 10000 2 scatter \n", + "6 10003 0 10001 3 0 0 10002 10000 3 absorption \n", + "7 10003 0 10001 3 0 0 10002 10000 3 scatter \n", + "8 10003 0 10001 4 0 0 10002 10000 4 absorption \n", + "9 10003 0 10001 4 0 0 10002 10000 4 scatter \n", + "10 10003 0 10001 5 0 0 10002 10000 5 absorption \n", + "11 10003 0 10001 5 0 0 10002 10000 5 scatter \n", + "12 10003 0 10001 6 0 0 10002 10000 6 absorption \n", + "13 10003 0 10001 6 0 0 10002 10000 6 scatter \n", + "14 10003 0 10001 7 0 0 10002 10000 7 absorption \n", + "15 10003 0 10001 7 0 0 10002 10000 7 scatter \n", + "16 10003 0 10001 8 0 0 10002 10000 8 absorption \n", + "17 10003 0 10001 8 0 0 10002 10000 8 scatter \n", + "18 10003 0 10001 9 0 0 10002 10000 9 absorption \n", + "19 10003 0 10001 9 0 0 10002 10000 9 scatter \n", "\n", - " mean std. dev. \n", - " \n", - " \n", - "bin \n", - "0 0.000136 0.000017 \n", - "1 0.018504 0.000740 \n", - "2 0.000231 0.000031 \n", - "3 0.029149 0.001525 \n", - "4 0.000306 0.000032 \n", - "5 0.039770 0.001519 \n", - "6 0.000339 0.000028 \n", - "7 0.046708 0.001355 \n", - "8 0.000433 0.000031 \n", - "9 0.056359 0.001790 \n", - "10 0.000538 0.000028 \n", - "11 0.064943 0.001978 \n", - "12 0.000588 0.000028 \n", - "13 0.070231 0.002714 \n", - "14 0.000670 0.000041 \n", - "15 0.075852 0.001862 \n", - "16 0.000745 0.000039 \n", - "17 0.086234 0.001968 \n", - "18 0.000731 0.000039 \n", - "19 0.090448 0.001956 " + " mean std. dev. \n", + " \n", + " \n", + "0 0.000131 0.000014 \n", + "1 0.018582 0.000680 \n", + "2 0.000220 0.000023 \n", + "3 0.028711 0.001186 \n", + "4 0.000295 0.000022 \n", + "5 0.038782 0.001084 \n", + "6 0.000331 0.000022 \n", + "7 0.045772 0.001084 \n", + "8 0.000419 0.000026 \n", + "9 0.055975 0.001344 \n", + "10 0.000514 0.000024 \n", + "11 0.063289 0.001605 \n", + "12 0.000591 0.000027 \n", + "13 0.071011 0.002058 \n", + "14 0.000671 0.000036 \n", + "15 0.077891 0.001952 \n", + "16 0.000721 0.000031 \n", + "17 0.086393 0.001722 \n", + "18 0.000748 0.000033 \n", + "19 0.090861 0.001669 " ] }, "execution_count": 34, @@ -2209,38 +2158,38 @@ " \n", " \n", " mean\n", - " 0.000416\n", - " 0.000025\n", + " 0.000417\n", + " 0.000020\n", " \n", " \n", " std\n", " 0.000238\n", - " 0.000011\n", + " 0.000008\n", " \n", " \n", " min\n", - " 0.000023\n", - " 0.000004\n", + " 0.000020\n", + " 0.000003\n", " \n", " \n", " 25%\n", - " 0.000206\n", - " 0.000017\n", + " 0.000214\n", + " 0.000014\n", " \n", " \n", " 50%\n", - " 0.000391\n", - " 0.000024\n", + " 0.000394\n", + " 0.000019\n", " \n", " \n", " 75%\n", - " 0.000626\n", - " 0.000031\n", + " 0.000627\n", + " 0.000025\n", " \n", " \n", " max\n", - " 0.000928\n", - " 0.000061\n", + " 0.000915\n", + " 0.000049\n", " \n", " \n", "\n", @@ -2251,13 +2200,13 @@ " \n", " \n", "count 289.000000 289.000000\n", - "mean 0.000416 0.000025\n", - "std 0.000238 0.000011\n", - "min 0.000023 0.000004\n", - "25% 0.000206 0.000017\n", - "50% 0.000391 0.000024\n", - "75% 0.000626 0.000031\n", - "max 0.000928 0.000061" + "mean 0.000417 0.000020\n", + "std 0.000238 0.000008\n", + "min 0.000020 0.000003\n", + "25% 0.000214 0.000014\n", + "50% 0.000394 0.000019\n", + "75% 0.000627 0.000025\n", + "max 0.000915 0.000049" ] }, "execution_count": 35, @@ -2292,7 +2241,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 0.474494586047\n" + "Mann-Whitney Test p-value: 0.498462484897\n" ] } ], @@ -2330,7 +2279,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 1.364780046e-41\n" + "Mann-Whitney Test p-value: 1.61253828675e-41\n" ] } ], @@ -2376,7 +2325,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 38, @@ -2385,9 +2334,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\norlkyRKeP3+erVp1IWCgqI78DIFVDAuLossVo41pQ4rqwy2ZmHgjbbYuFKvqVlBVI1i3bnMajRMo\nZofbaLNF+F0sBAtI4yGNR2kSSvozMzO5Zs0aLlmyxFtp9Vr1d+p0K4HV9ATQgXrU6XoQeJ6KUpuT\nJz9T+EEoTugNG7amw5FIp7Mbw8NjvUUbe/S4g6Jib87VvO+Vty8e/WFh0QS20RPstdsT+eGHH+bZ\nfvPmzbTbI+l01qfVGsYFCxbx6aefZnh4RZrN5Vi/fjMeOnTIu/2MGTNoMPhWEn6Fwp1zG1W1OgcO\nHMLGjdvSZqtB4f6qR1Ep+B1GR1fzHmfQoH9RBNQ9x9nJ6OjqHDz4Ier1U7TnXtBmEdna1buFgIF3\n331/ntldcnIyq1evR5OpEnW6kVTVBD722JMFjvfp06dpt0dSuKNI4FM6nVH866+/Cv1fpaamagH5\ntfQ013I6b+XUqVO928yf/xLNZjtVNZ7h4bHctWuX9n/0XTDxGZs06cixY59gtWpN2Lx5F37zzTdM\nSUlhixadaTCYGB5eievWrStUUyCANB6hbTwkocWQIcNpNI7TTgbrKPzkHjdOCo1Ga5FWy0yfPkOr\ntOqpwjuPN97YgyS5ePF/tF7tRyiqurbnlCkFNzM6cuQIq1Spr13lhtFqrcpu3frmWVKbkZGhXUF7\nakMdpF7vok7XjqKrYWMCbVmhQrw3nrN//35tietSAl9RUdry3nvv56pVq7h161a63W5mZmZy8uTJ\ntFq7Myf/xU293uTN5J816wXabN00N46bJtNY3nrrXdoJdixFwPlhiuCzZzx3sly52AI/d3Z2Nleu\nXMlp06YV2nHw66+/ptOZ6HMiJ53O+oW23RVFJQdTLCvvps3Q3qaiVMxTBTctLY0HDx70xnPuvXeY\nj2EkdboF7Nbt9qu+V0kCaTyk8ZCUHCdOnGB0dDXa7T1osTQh0NXnhJRJo9FapFav9933EP0bS33P\nuLi6JMVJZOLEKbTZXLRY7HzwwVFXNUgJCU1pMEzTTtxfetu65ubo0aNUlGif9/yGQGXm5FecI+Ck\n3d6aGzdu9O63fft2tmnTnbVrt+SkSc/kuxJo69atVNUqFKu1xFV2eHis94R45coVdu9+G222GNrt\nNVizZmOePHmSnTr1pEgMbEaxuEClwdCLOt0TVJQYLl/+Zp73uh6OHDmi9WPxFMg8SoslLE/9sNx8\n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\nRCKRSCSB5/8ByMyfADZGvh4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2414,7 +2363,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -2423,9 +2372,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2458,7 +2407,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.9" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 1bd7ee49a..cea483f9d 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -326,7 +326,18 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Run openmc in plotting mode\n", "executor = openmc.Executor()\n", @@ -342,7 +353,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB98JEwAiCb5uYN4AAALKSURBVGje7dpLcqQwDAbgHHE2\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/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDktMThUMjE6MTc6\nMDErMDc6MDA/DItCAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA5LTE4VDIxOjE3OjAxKzA3OjAw\nTlEz/gAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDJUMjM6NTE6MTQtMDQ6MDBw2InyAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAy\nVDIzOjUxOjE0LTA0OjAwAYUxTgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -376,8 +387,7 @@ "outputs": [], "source": [ "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", - "tallies_file.tallies = []" + "tallies_file = openmc.TalliesFile()" ] }, { @@ -454,9 +464,9 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 3df61825cc8c93656ed1458c34fca14000884e73\n", - " Date/Time: 2015-09-19 07:34:09\n", - " OpenMP Threads: 4\n", + " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", + " Date/Time: 2015-10-02 23:51:14\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -591,20 +601,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.6600E-01 seconds\n", - " Reading cross sections = 1.1500E-01 seconds\n", - " Total time in simulation = 8.1308E+01 seconds\n", - " Time in transport only = 8.1157E+01 seconds\n", - " Time in inactive batches = 2.1600E+00 seconds\n", - " Time in active batches = 7.9148E+01 seconds\n", - " Time synchronizing fission bank = 1.6000E-02 seconds\n", - " Sampling source sites = 9.0000E-03 seconds\n", - " SEND/RECV source sites = 7.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-02 seconds\n", - " Total time for finalization = 1.6400E-01 seconds\n", - " Total time elapsed = 8.1856E+01 seconds\n", - " Calculation Rate (inactive) = 23148.1 neutrons/second\n", - " Calculation Rate (active) = 5685.55 neutrons/second\n", + " Total time for initialization = 5.7400E-01 seconds\n", + " Reading cross sections = 1.3400E-01 seconds\n", + " Total time in simulation = 3.5996E+02 seconds\n", + " Time in transport only = 3.5984E+02 seconds\n", + " Time in inactive batches = 1.0821E+01 seconds\n", + " Time in active batches = 3.4914E+02 seconds\n", + " Time synchronizing fission bank = 1.5000E-02 seconds\n", + " Sampling source sites = 7.0000E-03 seconds\n", + " SEND/RECV source sites = 8.0000E-03 seconds\n", + " Time accumulating tallies = 3.4000E-02 seconds\n", + " Total time for finalization = 2.5500E-01 seconds\n", + " Total time elapsed = 3.6081E+02 seconds\n", + " Calculation Rate (inactive) = 4620.64 neutrons/second\n", + " Calculation Rate (active) = 1288.87 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -682,8 +692,8 @@ "\tName =\t\n", "\tFilters =\t\n", " \t\tmesh\t[10000]\n", - "\tNuclides =\t-1 \n", - "\tScores =\t['flux', 'fission']\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'flux', u'fission']\n", "\tEstimator =\ttracklength\n", "\n" ] @@ -817,8 +827,8 @@ "\tName =\t\n", "\tFilters =\t\n", " \t\tmesh\t[10000]\n", - "\tNuclides =\t-1 \n", - "\tScores =\t['flux']\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'flux']\n", "\tEstimator =\ttracklength\n", "\n" ] @@ -861,7 +871,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -870,9 +880,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWwAAAC4CAYAAADHR9Y0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XnQJOdh3/dv3z0993289/3ufR8AFsQNAgQPSKIkymRk\nyVKiVGJJseOyEztOxZFdlbKiUnSVSkokUbZIkabEAyQBECSIa4EFdhfY+3333fe+37nvq7unO3+s\nUuXYKkslaAWwOJ//ZmrmfXqmfvV7e7qfflpwXZe+vr6+vg8/8YPegL6+vr6+v55+Yff19fX9gOgX\ndl9fX98PiH5h9/X19f2A6Bd2X19f3w+IfmH39fX1/YB4X4UtCMJTgiDcFgRhURCEf/a3tVF9fR+k\nfq77PqyEv+k8bEEQJGABeBzYBi4BP+W67vzf3ub19f3d6ue678Ps/exhnwaWXNddc13XAr4EfOpv\nZ7P6+j4w/Vz3fWi9n8IeADb/o8dbf/FcX98Psn6u+z605Pfx3r/yWIogCP3r3vvuKdd1hb/tP/lX\nvaCf676/C39Ztt9PYW8DQ//R4yHu7o38/0jHPk7y5d9Ak9p8THuep9UX+U37l9gV0sTcAjcunsQR\nBEYOLNGVNJqyl5ro5zPyl/C0Onxh+2fxJ8uoeodCIU29E8TtuaSVTarNCKVGAqHngCMQ0Kp8dN9z\n7L2X4Y1f+G1G/+9foat62FmZBAmElotQcPCereKq0LgZRo2YCKKLmdOYemAOr1Jn7g+OEHi0hPdM\nnfxChk7RoFeUYeMvPpQf8AIJIAVYwEvz8IdvgfBniP/jt5GGbZy8SCRVYOrpW0xJd1Acm3l7P03J\noGvrdIsG9XdDNG4E6NY0xh67w/hjd7A7CmlphwPKLR7tvEZL9PCOfIo/3vh5tp0BwpE8jk9kQN3i\nFJeYZIn19gi/8aMX+PXPD/NT+pdwvT3mpRle7jzO7+79MhFvnkHfGo2un63qECUzzOjQCk95XuQp\nvkOVIB10Oq7OnfoMFTcMGmDCyrdjvPpPZ4n/lognomD/c4PgPyly8NlrfJo/41/+2B0yX/l1FswZ\nDso3OSVdYtjeZDq7QqqcY2V8kFvefSwxRdgt46OOJPS4yBluLh1l5a0Zog/u4rpQfD3N0QcvERgv\ns+UMcFC8xaiwhoyN363joY0guOSI82vC//o+4vv+cg2zwE/ei/H/Gr78AY39wzbuBzn2v/pLn30/\nhX0ZmBIEYRTY4e6n+qn/9EWuLiB9W+AXH/8dPL4WrwoPMyavMswGdkdh6e397OYHWFw+gJMUUYa7\nGFNVVoQx0p49Hh96AVNVUEWTZPxF3mh8hPdunGD314foaSrCEQf54y2croJQdNFsE8+hJkLKJvsH\nNnYQ+LG7n1QyTHRfA/O3dewFDUYFxn58EXXEZN45zCntEpnEJms/OcoDqdc56L3Jy/ueYKkwSz6b\nAgNY5O4pqUGgBtwC1gDvCPzzMPxf38TjbxB/YJeG6SOiFhkR12lhkOukmd87TCK6y0njEp/TvsSF\nk2f5dvpp5l44guC4WC2NO1f2kY1nqMyGeVu/jwG2SLOLFO5izckUvp0h8/F1lAmLHTK08bDXy+D2\nLvKy8igBvcKPtJ+jqxkUezF6DZmt8ij5ZorevEQ3qyF4XOyf0mgO+NhmgOf5GBYKiU6OSy/dT85K\nwb67n7XTVODfGgweu8aJ0Luc+e1L3B6coUCUtzmDwi0eFl7FVFUMocmuleE7uU9gL6uEy2X2Z64S\n9eZJuDneMB/EFFXiSo4iMeySjHDdYeboAs4wvH0sjhlRqFsBsrU0lk9jV08zwDYlJ4LrChyX3iMn\nxN9HdN9/rvv6Pgh/48J2XdcWBOEfAt8BJOAP/rIz6ZLuIEgiI9I6bVGnSBRDaCHg0nB9OK6E3VNo\nmjIRT4Ggr4RPrLBTGiLfSROQ63TXNKJOgSPHrxLzZfEoLVp7IfyzNYypBhWCmKpLLwZZJYFgOHj9\nDTik0u76oQzsgRsTsU+p2GWN3qYMIjRzfszBDvJYh0IwgmBY6FMtSpUYy1tT2BkRwXGgzt3C7oKQ\nc1Dv6+CP1zBqLfK5FG3VQAxq6MEWw+PrlNph5IiFo8OWPYhXamJITY54rlK2Q7Q6BgP6JrHAGB6p\nhTDsEAsVGJeXyUeSND0GC+1p6rkQKc8u07F5po3bqKLNtdIparthXJ9ESY8TM3I0LT/YAg3HS0kO\nUXJC7IlJykqIYKSEZDp41BbWkEJBTFB3/HRkjRXGcBHIEUfDpCl5aaS8NG0Pkt9GTVloQybxcZv2\nboBsPUPxUJiSFGaXNHskqRFg2Z6kVI0TNio4isCWnKER9ePzReloAuFGBcoii/l9dHWNYirBpP8O\nsdgVhk5s4a4KVJphlPEO5WIUsdTDCQsUF2OYPR13v0BBiNFt6PSyKo2m/28a3b+VXPf1fRDezx42\nruu+ALzwX3qNcXAIY7aJ6xGxHBXLVbFFk4bgIyum6KY0JKOHOtolNbNFJJZHMh3mFw+TK6eQUz16\nr0qMdFbZP3kTb7TFQHyb7UMK0fs2Cd2Xp5E7TtcjYmZEloRJRpw1Bo4EqP6Mh8Z8GN4BLkEvo9Ab\nUMAwIWyCrVLbDeOpNAjvy7FqjLAtpfH76syvHOB64QTx2DZuRUDYdRGSDkggKj30I3Xi0zska3m6\ngo61piKsO2SOBxiaXmd+7hDDB5ZwdYEb1iFmhAUOqLc4mL7Jc5Vn2eiMsBnJ0JA8qHqX2FSBqfgS\nR/UrVA4EWeuOUqrGYFViLzxAO6rxOfVPSHjKXNVOk8+myatpiLgMh5cROg4M7EPrmFiOwpw0w0J7\nmkIvRihWIKNsk3ByVNIh5tcPUC17afc8zDcPsCaPM64sE3ZLgID3/gqi2MXv1hFTLo4tYcoqWy+M\nke2lyE7HqYl+2q4H1bGoTp/lhcYzlLcTxGJFookCir+N19PDoMmmPshCYT/NjSAsgRh0QZF4WHuF\nsfFlOsMaX//9n2B1dRJlsEP+ZhJBdPE+XsG646FbMahMhugoOtVqmAuXhxFK7ye57z/XcM/28P8a\nPqixf9jG/aDH/s+9r8L+6xg87uNjE18l49nitcajXKrez2fjf0xHV1kRJ+j5ReLBLLNHb1LwR1gr\njdOcD9L4YgCv3CDzLzbIHUqzl03zle3P8gnpazw48Du88D98jKVvNFn9ly20f5TCCQ/QLvnYvTmM\nlrJRZiaxcgbumgzrwCFgDBBd2L0NsgufPcTPHfk9Toy8w5IxQVCqYqHwLidojvmQBh1CnhLXB49Q\n9gbwhpuIUw5OTcSMqmxeG6U4lyZ5eAcj2WRjfpy2foJ1YRRBcjkjXCQgljivnSPXS6A7HfYp80S9\neQy3QUfU2M88E8oq4WiLrldmlxge2nyq+S3OVS+QnY6x4J/ijjiJJciUt0LwXcDH3Sx1BHKXMwiO\nCwf2c7l2hpXqFD6zQeWNENViEPMpFWnKxalI3P6V/RQWZRxtl/pDMZqzYYyxJuLsMlkzw8ruNJHR\nHMcCVzliX+Mbf/5pFrf24QyIdNY9KGmTbSeDaamYbR27pGMGTtOZj+LYErc4wmpvgpLuxzkvY815\nGfvpRbTkJr39Mr0xCZ9cJ+HL42gCt5mlLIUJfyLPyBWV5V+bprcrw7hD45iPyZNLDErb6J4Wd7rT\nFM04dAQis3kK9zq8/0U/jCXywzbuBz32f+6eF3ZczXHSt0CqkydsVfC5dZavTKGEu6Qnd9AmbNqm\nQb0VoHw7RqtroIYsRK2HR24z7FsjMFujkQyg+C1mmnc403ubvdkUuS8Ns3oxjbftwenIOFmZ9nUf\nNTOIxzKw31RhTbz7nQfBCDWIJvIUxx2kXo/M/fMcS11myneHOWEfDXy0LYN8NUVnXketmfARh47s\nQfI4BEMVLEOhJoWw8jqdgoIp9hhOrCDIDqrQovr9AHJWZ3/6Oues84xsrzNS22IzMUgz6GFJmCSX\nTyJ2XApDMQaUbRLKJqlYnj09yQ5xXCCp7HHc9y7rkQEqmp9bzj5uFI9S00McPvcexnQbIelgeRVW\nipOUuhEQoNBJUMgl7h5bvwA0gBjsrg9SzwfYu5mh2zQh0cbK66CpiLaLOaKCBrqng1dqYpkaq9Up\n8r0kLd2LHmky6V1AS7SpiAG6CCiCRVwtsbNm0dpVQbYpzwQpHwghDndxqxLCroxpqahaB0mz0MMt\nRNum1AmxMz8Auos62SExlMXfaiAuuexUh3AEGJJXCERr9FQBC4WgXCUt7rLbGsHvrX7Ahd3X93fv\nnhd2lCLjzhrhap0pfYnjgYu88PlPkRjY42OzX8dz8F2u7x7jKzc+i/Rij3CswPAvLbH6yAya2SGp\n7JEe2kEZtIgpefavzBHNVxjRNwj1jtLr3Uet7EeURaR8D2dVpBvUcZperJcVUIG/D8K6S9gpcnDk\nCreePIrqWJwaex1darLsTvCi9RSOKNFteVja2If9ZQVlo0vwYA5TNFArDoF4nUoxQmshiFsSwQ/u\nkR6mTwWvg+Gv0viyRmCtwaOffJGzq+9wZPUmT628zNJHhnktdo4/5B+wujxNuFhhKzGER2kjyC6V\naPDuPww8mKi0/Dolv589kqy7I9w297G+Mc3YwDLP/MrXCVNGpEcbg695Pk29cATrTQE6QBZ4HsgD\nmgsXHXbLA1AehBhw3AtDYfC4CD0HIetSb/iJh3LsH7xGB52Fyizz2SNwAHzBKsmZLe6zX0dzO7wj\nn8XpCXjUNofD12huVGi93gOzC08poEgQBXwCdkqioMSouT4kxyEqFqhbATbKwwjnZTLRbQ5OXiFJ\nFm2mS3pmm1f++KPYdYUHlDeZE/axwjg6HTLiDgFhkboZJWDX7nV0+/o+dO55YUv06EkSV8MHWJGG\nEZsOiGCKKmUirBJiO5wmemyHo5lruOsi7/3+SRrJAO5klS1xkOLrSQaLW3z2o18km0jwgvo0r914\nhOWtMRAMBLVHbDBLOFZhUxmjth1CeC2ObXhgAoSEiz7awButYQgtPnX8q5S7Yd4oPUw1EEQqu6y9\nOU1vSMaJivQcGf3HG3j1Gnq8w4SwSjBYZV0bxk24RIQstbej2KKEE3BYz03g1gV6FYmjmSv8xOmr\nTLHAanKIef805oSKL1qjSpAGXjz7a+hmnSV9nBHWUDE5zzkqhOii4SAiYdNG5xYHuF45ysbuFO2a\nQUbZ5UHe4BUeoUaAYTZ4yP8Kse0C35vr4cwATe6eJM0DnTbsbcBoFKbiMAK4IAgO4gmTYKJMqFdl\n+8Iwm3tjiG0HR5ZopwyYBjSIqCVOcYnbbx0k20lSO+thxLOOZ6PLpT99gErie0j/u0Xv6xqs1eHL\nXRw1DKsS8nqXWLdAq2hQKKTwDjUZ1Ve5P/Ym008tIqoOeyQxaNHGQ5UA1pxC/uUkLz3/DO4vOfQ+\nCjU3QO2dMMH1Oo889hKB4QrX7nV4+/o+ZO55Ybcx2BEy2LpMiTAdVePQoaskwjkG2GaXNKre5X79\nPEfi19iVBnnl6pP0ZAnB4yIKDqLaw9FFKkKIK8YRvld/lPmbR3DiAt4nO3SaGk5BxPbKuCEB8z0F\nburwqIQ0Y6GmO4hGD8WwCAsloskcrumi1TvkhCSuKKLqXaotL23LgDy4aYFeVKZzx0soVWEydYcO\nKrar0Or4cJcgPFIkHthla3cMy1QJ6mW0SBtSOjkSbBkDNAwfaswiRp5SL0LNDDIdXCAj75AlRa8k\nE+1UcOISutIh7uaZ6K7il5pckY9x0T7Noj1FEwPHK9A1FIpEyZKkQAwLBbuuYhb0uyVdA9XXJfRY\nicZ1P60dCXQZz/EO8okqzbAPzeoQEMskp3fQ4h0sSyG/nKCrelCw6OQN/ME6s8FbbC8PYc5rlN+O\nsbY2QS4eRz9do131Ye562dkcgqiM95N1XFWme8HG3JLgFRlsEUcVae34APDLNQQBPFKblL6Hk5Tw\nCw2O8x51/KwxSokIXVullfWyvjiOd6aGL1DFd6xKsZiiu+dj5NAa3bx2r6Pb1/ehc88Lu0iEG0ww\ny20sFKpGgE996s+YZAkViyV3kgA1Hue7+IQmFxMawqMONCW0bpeks0fqgT16gsRX+DQL7gzLjUm6\nt1TCDxfw3l9l78+HKexmKGQy0AJWbdi0IeygTnXwZ4pUs3EEWyThybHNIG3Vw7nI67QwaCR9aB9v\nszS3j84tD8xBd8tL1+PFXRewH7pBNFnkoHCTdjHA0s0D8CqMPLjOGf+bvFjw00h7yYyss7eW5Js8\niOtKxMiREXZJksNEo2hHqVcCnA28w0H5Jr/JL+GuK6T38kw/cIeAUmGqt8xwPcvL2sN83vc53m6f\noSSHUTN1zLbOqjbM1/gRagSoEOI2s+TWBmluBXC9XwQBfCM1Zn7yBqvfm6Z1bRSSkwTPbOGb2mIr\nN0bIW2A6MsdZ3qZMhKvyUaSHunhkk5BWJffyAAPeTR6bfpHn/+xZlp6bZm8hA4+D+skOqmqyvDFD\nN2/AfvC2TSJTReQpi+LRFObXE/BFYMLFfERlZW6aYc8qk6fmaAh+GvjYdId5tfIE90lv8X/qv8xt\nZtgjRZEY3QEdpoAdaL4YQKuaDP3qLWyvh3Vxgu9c+zj9A9h9P4zueWGLuKwwzh2mqePHRCVLkuX2\nFJcrZ1nLjuHWBW7bhxk5uEQvKHFw+gpbrQFqWS9v/fnD0BBwQ8BZB6IOnlab1ntB6r4QbUXF/mYR\npnwIkwG08SbObQkTCZ7rYtYEarU4VlVjKzHIt7yf4AH9TYx8h5ff+yjCQYteUqTR9pGJ7zJydpXt\n/Rm8ahPRguXYDDdKR6m+FGLkzBKWJYMDHIC1wATCvMB/2/49BqPrVDD4PYKsViZpbQbQAh0GgptY\nQQVFsMgoO/xa+B+zJE/yLT7OANvcGp1lOTbGO637OCe+hsfb5ZXAo1wRj1EWQnzO8yfobodsJ8kL\nL3+SWijM4jNTVBphuoKGYDiEx/JEozmae1l6D2eR/SaWrNBLSJABqtBsGuhCg6ORy5TtIEvVKTRf\nl5BUJdXIsvrVKSreMNYJL+aWzmZwiBeKz7DnpO6etPWD51N1pH02zRfD2OsK9ID90LnlIZ9LI/TA\nLHpAAR4Ftjbhqzugpyhc89DdPIz6YIt2wkNd8BMJ57AFga/zLG10GvgYYpP8sQHKjRhc5O7snge4\nOwe+B5SAJYif2iN/r8Pb1/chc88LG2CLQfzUsZHporHEFGs7E7x59WGi4QJpeYeIW6LgxlHVDgei\n1wn6S2xURtlYnkLUbJRgF9k1USwTty3itgWsrkJPVFFGSvSCKo7posS72AdVmBTBBx6nTdhtUtWC\ntGQPtzuzDJi7sCyx9u0JMsE19EQT01VwbBFBcWDEIaNvEbfyeJQOG+fHuHXrEHZMpKKFEWI27imB\nshKG4gTeUIMBYwsPAcK4KJToodHCwC1LjC+u0xg18MXrTOmL7JHCsFucrV9kSZ/gdf1Brm+cwCfW\n8ap1zu88RN3rJZ7IcVi5jkQPpycyoq2xZo2xvTNMI+vH6QjocgcxUEfTuqC56IkWiFDciNPuGkgh\nG8PfQA5Y6GKb08YFKp0wS91Jsk6Kai+M2rSxGjrWuo61rcMmNGd9rLvD2K7n7onKURCO9nB1sF7R\ncTvC3ROLfjDkJqFamd25QewFBbrADKC4YLugurSaXjorXryHy2iRDqpk0e04bNcHeaHzceSYie5r\nE1SqJKd3MYQWqdAeG4eHac16qMpBnBh4Rpp0uh48mebfRXT7+j5U7nlh9xDJEedJvkOZCOc5x2VO\nkp9PI/37Hgf+52s8c+o5fsz9Kr8r/gJbDHKAm0yrd7jtPcBOcBTPuRrBwyUMsUWukqLcjeKOycgz\nHdQHOngfUWhfk2nddhFsF+GkCx8T4JBBenidE/df4DpH2OoO0qj7+G7+adyrMr1vSsw+vED83C7X\n9cNsXx6hko/gTjscTVzneOA9Dk3e5HuvPcWr1x7nWvwk4kkT6UCb3pSMW1JoVT18ZfhZ3ovsJ0Ge\nDG8zEfwWi4EpNoRhTly+yn/3O/8PF372BNceOsBLPMkEyzzReplDKwv8Ufq/4g3/R3DLInPqfopS\niLmXj3Jk/AonH70MwB2muew5wdSPzqNudPn+5adwVwXYhkbBQ3MmDHEXdy5JsiAj6xarL8/QQ8YY\naDDwwBq2TyImFjjHeWKeAmvaKL9l/yI36kfpNL245yT4CvC/ATOgDJr4olVqgowZkeFxMEMaFFzc\nFjAJpIEKDApbHLbe4IU//xS1chDC3L10/9FheHYIIgIUwClAs+sl2K5yXH+Pb638KKuLEwg7LsKD\nHUamVngg+CZTmXkGU1s8de5FviB8lu/xOOu9YfRDHcJjOXLzg9gZ6V5Ht6/vQ+eeF3aumKT9bpr1\nmTG8vgYj7jpZM4l3X42JX1xiZGIVn1jHRuIUl4hRoEiMY7xHNFHk6uNHyaS2UJoWV5dP0hBDuLoM\nTwoMHNomLu+xkpuia3lxVYn2835cVUQwHfwHigwOrHNYusERrtPQfOyQ4dUrT7LlGcL3qyXWTwyy\n14vSkHwExkoMpdaZCi4w4Nliz05zuX6KyqkwY5k77LjDmA0VcV3AGG3iHSoQSlbRfB0QBBQsIhQ5\nJVxiVphngxGyqTT/8KnfQh7qoNBGo4uAy5ZngOdHnmHBmMKv1Dg+8TamR6GpGKQe3OKM/jYPti7w\nkvYYF8z7WWjuoxvwICdsjh17h73JFJV8hNZOABcQAz2ksS4N2Y/XaTJz7iaS6KB52ySNPVaqkyzu\nHeB3V38ZXerQ8PhYb03SDRnIyR6jQwu0T3jZfGIURsEaVmhUfNirDrRNUFSQHIKDFdI/eptkMIds\n2Oz1Uui5Cka6SernNqFu05Z0/AN1uraBa0sczlxBGevSahto8TZ+vcqWlCE4UiDmMSimY3wi802m\nPAs4iAwJG2SkXQRcbGRwXYJCleZckOaeDwYsqoTudXT7+j507nlhFyoJeqUwi9YU+7nJlLPI5eop\neqqMPttG9tlkuym+33oc0yNTIcx85yCTxjKy10KbahIRC0gVqNcCdFsesAWIgSQ4SDtgbhhYWQ32\nwFrX0QY7eLw1JkcWGA6v4aWFYDokyHNUv8qWNkZlJAD3W8iyhd9tEKJCJFYmSpEwZcKUKZlR5lv7\nGRtdYf/ETb53LUyxHAdHQp/oMBm+w37mqOFHxEGli0YHlS5tNw4uZCNJXrz/44xElhllhTS72Mg0\nFC/zsWmyJLFMGZ/Zwqs2wOfgzEgMmFtErDJtPPQcmVCvhuaa6N4WimFSbfqphkOQcCEr4PfUCCS3\naW6YdIpelCkLOWUi6xbdnE4776OQT/Be1YOqm2BBfSUMY6CNt/CFqrgHQXzGxpts4EQEmlsGSD0I\numA4+LQG0XCB5MAOoXYNn9NgxFim4NlmMBQm85FNOm0FpxRBXrIwiw4CAnq8jap06LkiWrlLsxkg\nq2Ug6OBxWgh1l4y+TVzNscQUEUqEKZMjgYBDWKhgCiqVkkor50Oc6NDOG/c6un19Hzr3vLBrjTDy\nkModbYZJFtnXu42247C0OUq5lkR+2GZJmebK0mm00QaOINLYDGOOq3hCDdbao3i1FobRxpnowasO\n3JDAA+sbE2z6RrFbyt1V9NaBYYhMFQjW1nk4WMZHgyVngu/XHme/MM//Ev1XzDxwi41OhqXqJM8G\nv8EZ4x1sJMJUKBPmG3yKh3iNWebR6HKMKzzsvMK7zfso9uIImosmdjnFJf4eX+BP+XvU8aNiYaLx\njnuGzzs/i+3IiKpDcmALSbSo48eghYlKhh2e4dt8h4/yevUhqm/EeXzqO3zkxPdZYIa64mVemWJM\nWCFp7OF4RFxBYJMhrrpHqe7EaLX9ELTBJ5HRd9inXGb9+TXee+MUN+8/hvCEBUMOwnWZnq2gR1tM\nPH6bqD+PW5K4vHo/piRixKrsCGnawx7kQIvh0BLmrsHipX1wUoGEAwmLVGCHuJajjYeF3EHS3T1+\nefxXWeQ6p2mwwjhVPUinZFD5n+JYBQ1m4a3eQ2C6uLcFhLALcQFSLuGjOey8gvO2wtXIcZYjY2wx\nRJIsXXSWuDuDaJo7XOUodkTGtQR6yHCjf//ovh8+9/6kY8lBUkxKz8V5PfAYq6Mz7MwP0StItEUP\n85X99JoStTeDeAIQHC4zM3yThHcPV4SgVqMsh+m6GrOReQZP7aCOWbwrnyC3m6a17YcGyPu6yA+b\nmKqONS5iXlWpiYG7P6sFGclrs8QEv+X8IjGlwFPiCyxIM9iqzBITpMjyLhO08fARXmNnbpALuQdJ\n7d8h5skRpch/v+83eNV+hIvaaZKePRa6M/x29xdRDYu4nMNHgyxJysIUguiSEHLYlsx2a4DSXgyX\nbQ5O3OJS9izfbT+NO9BjT0th+FrEj92mE1JZdid4yHmNieYqoXaNSLjEeetBvlt5GqcmUOsFKChx\nXMMlHtnFq9VpGAEkuUv9up92WMdVBezrCpNnlkimdjAlnbIbwWfU+Ezwi+yoGd7iHPaWhBy2UF2T\najmKSpdUbIWoWqDcjcO2AAJgiVCW6fgNCp0ElUKMih1ENkwuC6fYooOHSSZZYmdviNu7YewDCrFk\nlviZLNY+hUbPR3PMi1dv4PU08RpNZJ+JLcnEP5JDjXWoVCJsrY3x0uBT+Ds18pfT9BSJts9DPpzA\nlFRSo1s8FHmF28kD/Qtn+n7o3PPCFrYc2HBpLgRYysywmRyhZfnABKcnsbMziGj1UN0OQaFC0tgj\nHdghTg4bmYhaoliP0bENxoLLjM0so42a3M5PE3A9aLZFnQBCxkGeuTvTQNQdGm0/u3YaTe4SF3JE\nPXmWelP8WffH+bT6HxiT10CGhc4sW9YQk/oiN/OHcU2YSd3mSj3NzeohxvRFPGobBZOTQ2+z4ya4\n7u5HFbosFqd5LfcIHx1+kbgvRx0/m7ZKr7EPtyOhqja9kkJlLoohdhATLobb5HLnDNebR9GdOorT\nxSu38Q3WqSt316ZOuDkG7W1Us0fN8VHsxXincwZvo4XYc7BVCdnTxaO2CPor2F2ZTk8jRwLP/hYD\nhS32VtIfokIWAAAgAElEQVSMGascilyhGgmyUJvF6YqkxD12agNk8ynwuSg+E8F1sdoKg9oWpz0X\nqBCkIsbupkMFHAG2JGpqiAYBivNJ5MkOVkxkRRijwAprjDLKGkrXRpIdhh7fIDBQxjPcpJvXsAwJ\nphxOG+8wpG7ilRpYKOT1OKuRUSxHopP3oNVMVs0xzKZGZSWO4WuhxExsSQGfi6Z3yPR2ETJiv7D7\nfujc88J2bil0v+LDfVIkcmiHTHqTxeA+ajdDcFWAeQllxsT/35SYMW7jk+uUiOAi4KVJiArZpUHK\njQDyKZOqHsQuqax/a4rB2XXiDy9wdeU0jRt+lLke45+5SV0MsLYXZ6s1zGzgNg9ynmUmWDXHqVf9\nfC/0BBlphwQ57uT3U7DjrAyPUXkrhpAT+JPP/DShI2VmD96k6InQQaeLxiVOccM+TMUOYWsyrXwA\n54ZOPpwAn4vtyiy1N2msHaW3oZKND+HMiTi/pTL+z24x/sgd6rIfebhDxNlDUUwapo/dRpqd/Cij\nkWUGkltclE5TCkaJBQpsSEOU1BART5aZwdvobpeyE2b5+iyFfArzhEz1cgzJ7mE4KT722HscOXiF\nL93+aRL7coyzwg4Zbt05wp3dffzhR36OvTsDZG8P4P9MCTlj0hVVxECXQ/IVPsef8AU+Sztm3L0d\nrcTduc93oFqJQQXc10R8P98gfiBPTMxjc/fQ0zz7qA0ajCUXeKL3XW7dOsJrX3kM99vQm5JIfjLL\nPxj/AqcTF7ADLi4C3xWf4D35H1OxQgQCNR489TJ7SpJtzzDVczEGU2vEolnKUpi9y4Ns3xrjj0Z/\ngc8N/vG9jm5f34fOvT8kMiTgDouQgEYnwO6tIbrLHrghwDxwSsAuK7Qu+ikciSMkHcKUWbBnqPf8\nbPcGEGI2Hr1JfjVNORzF6Ym0Yx5qkQBSoAsDFmlpg0xrG2+kzqi0SiZ0Ho8WvnvJszPKdm6EcjuO\nI8sIjouJyi5ppgPznHYuEBTL3Jo9xGpigrXaJMaVFsqeReOcj3cHTtENqJSI4kgi48IKw8IGhXiC\n25P72HprhJ32ED1dpF6uEPUX2D85x83WUdppD9P/9RyZQ1sMq+uc650nKFWRdh1uf+0AgRM1YtNl\nVjZmCQpVBpLb7App9qQUAi49JJqCwYC4Ra0XIFcxqG2Haa37MLsKTjEGHgExYWO9q3CzdQSP0GHm\n0C22nCGe3/0kQtwi70tQ1wLMzR2h46jYYwIty4+QdXEkActUcAIyjkck20lSuO6HL5ThqBdpXEQ5\n3cYydXptBYBOwcvu+jCXFZXGboH8wqPU415ahoGhN6kJfiaG7+A91uD13UcphOI0FB8v+x5mw0jh\nkZrcz1sMCxvcxwX25CRemhyUbpJ79Wmoi5w++RYPh79PWC9ynnM4oxJy0MIItpi3993z6Pb1fdjc\n+8IeBmHYQQ126Voajc0M7hsibLkIkoMv1kBQXcw1FXNSo4eERpdFZ4pdO41pq/i1BnLLoriaxO06\niGEbYcqlFgrQsRQI2gTVIgkzi6j3yPS20aVNWkKbHdJcdM+wXh+jXgmCCyFvDa/RIE+c6cAdDnON\nGeEOzEKtE8DMeiksx2gue/Hvr9MOeMkKGXaFNKraZb86R5w8ggdWvONkX0nT2TVgFBDeJC1u89Hp\nb6Os21RCYSafmEcWbMJOmWn3Dk28lOoxmu+FCA8WkQ90KTgpVMsEG3qSyJo1xpo5TtCpElLKDHk2\nmXf3kW8n6Rb9mJaC1jaJrFewHhJQxjsIVxrstdIYdpuTQ2+TzWbYaIzQiihYUYWIVcTcVvCna2Qy\nm0i7AtVqmJISRXcsqlaEa81jlL0RxGKXwO0Gbe8gblhDnjURHAG76WLFVNoFL+1rXrLSAGL+Fjvl\no8i+DrrWRulZLNnTnIxf4v4zb7Ag7sO1wYg3eSn4KDf1GabERYJUCVDjAc5TI4SIQ5gSvRUVp6Vw\n4InrnNXfwk+dJSZpDRoYAw0Ex2V+ffaeR7ev78Pm3he2CHLOJunbxgzLlMQI9u8ZOAkB+ZfbHBi4\ngmzYbNrDHPNfRsVkjv14lDYj8jp110/xUpL6YhgnJuEaEqIHPCM17IZKcydEYLBIbi5N7UqMJz79\nAhvVUd64+Qn0/FmUtMm8aFHPeFCLHbovegn8eJ1opISFynu947Tx8KB8HnAJaiV+Kv27vPK5R7jW\nPcLZ0AU+ln+J5FyBfyL9Gon0DtMDd3iDB1lYOkDuhUHs8/Ldq/4mgTclQlcbHBm6xmh6gyIR8kLs\n7tKpooeXhcfoChr7J27y7L/+GjcCB7noO83guRU2rAyl+qP8tP/f0SiHeWVzGqntcDB1lcmpC1Sl\nIJ5kBzsoszEyxoC7xcfDz3HZewJTUtG5Qzz9OpJrMy3d4UcSX6PWC/BvhX/KaHCdMf8qu6NpxuVl\nDivXSfv3eMN9kOeETxKkxt75JL/9nX/E7M/c4IGnLlM6GuL2WxGKyz5acyEin87BqEtxKIW7J8Iy\nUAVPtEXy8DpBpYosWXQtnZvZY7g+iQPha8RP7TDlzpGS9njFeZiAVeNh7VXe4Qx+ajzonmeodZGu\noDHnm0I85+DaArYikyNBAx8WCgNsE+xVudC6j3rIe8+j29f3YXPPC9vrq5M+s0QvLGA3PTjbKq4r\nggtOSWGvPIDkdWhEA0TVEhG1SJEou1YG25UYUjcYGNpF8AgYoRbzuwdZWxzDUjx3lzetibT+1I+9\noNJsC1zLH0cOWGjpZfCBJnRJC7ukPHs0Bv1U7otyOvo2GbZZZIqm6MVDi9f5CCWiIMB19RCb+jCu\nJJHS94gFc/ipERP3GPatMcYqlzlJKFbEc6LDpjDIrHqHT4w+zxuba9w/PoSFwrXcMZacSZppHVuW\nGBS2OSxcx0KhqXtZHhrDRmKYdVw/pMxdfHYTWbTBcDASdTxWm8nAImd5m5IQoaUYIGoIdRdNMolP\nZDnDO5ioLNPghHqJHhLrjN4tUNlmxFkDAWqin5ieZ4hNUuzRk0UcBOSWRel8lE7RwH5Aoh710VB9\n7BkDtB0DVxdwhyXaphdBcGH8L9bdrgI74FUbxO08uWtpQgMlBjLbnPBfpaF5ueEeZs8eYJ+1yI/w\nHDGjgCyZmH8xa90hxKYwhKF2qBLkMifwZSpElvNc/93j5MNp5IzN+sgIktDDkUAO9xj0bnL7Xoe3\nr+9D5p4XtsfbJD6WI69HsXdV7F0dQqAbHbx7DXL1NIIXjJEmeqSL19Mk0G6w4Sg4ssCAuoM2buId\na5JWtrErMvmdBM09Hw5t2GjT/JofejLMwpX6SWaHbjIytkojWETrmqTaOSSvTXPQwDdYJ9PeYbC9\njesRiIpF6vh4i/sptSPU7QDf1p6hnEsQqDfozug0wh60cIsYu6TZIk4ew2kRT2fxpZtoJ5s8WfgO\n/yL/r/k3o0NMHzjKmjvKS6WnuFY9ilprokW6ELxM2ChjCQpVgrzNWYbZYMJdJtyr4ncaBKjRRkP1\ntxnyrxKgxqHuVU5XLnLDd4i67KeLRr6eQZe76HQ5zHV6SOzQ5nD1Bp2eh4uhM7RFD16nRbBVo6DG\nKKsRpuyLDDo76G6XJXWSghjD7ijsXBlGH2ox8OwaNfxUKlF2K8M4bQmCwGlolgN372AT4e7sERtI\nOxgbTWKtIqWlFH6twfTwAh+NfIdXeIS3rLMUGmk6LYOkmOc+79vk5Bh54qiY2MgsMoWrCezZKd5o\nPESgW8O72+DGS8eYHzyAe1BA9DhYPRVZtUgFN4kKxXsd3b6+D517vx6262Hxj/Yx9rk7uAGFylgc\nZmFkeIXTT7/FXG8fstRjSruD6LG5VT7E9+c+ysjUMkOpNbxCg6uFU9TMECcG3iZ2OMupgQu8s/MA\nzT/fg/N5OHoI9vvuLjgUFIg5RZJs0WCL5Z1pXrn+JMnTW/jSNSS3x+eXfp6wW+LYwYtMiMtMskiA\nGl9c/Psslg5gTULvlg4FkTeHH2BUXyVEhQoh6vhpOgarrVHqUoADnjl+1v+H3J+9iLMuke/GqXKK\nTWGQ6riB8maX9v8RpPOwy+JDs3z92LMMKZsoWMQokCDHRG+FJ2uv4cu2sFoSK7PDtL0eTDQUTAY3\nd0nNlTlx9grjiRUCYo0vH/kMimCRJItED4keGXaYeL1Oo+Zn9EfWqBpBtupDXL52ltHhFc4NvsZP\nlL7OQH0b01FoDPnQPB1Mr4LzlIDu7RCmTJkwgs/GO1ymbQSwGtrdZWu7QI27e9Y2EHIQDpk4ZYhH\nszz69MuEPBW8NJDoIeLgF2vUjCAvSI9xQ5ghLe8wwjqDbN69uQUSbTzskGG5PMWt28cQl1x8UpXp\nf3OThs+Haah4vS12S4OU6gl290YoeWP3Orp9fR8697ywA4EataAXQ24jBPJUx4M0bB/+WJl0fJss\ncTS6jLNMliSba8MU/ziOfl8bz6k2wYNVbI9Ite7n6qsn8U1WMWMqTkWEqh+j3GDmzBWGj+cwYi0u\nKSepOQGa5SnEbhzLK+MOuEx6FkmQvXvCL9QAVyAnJMkTw0TlOodphAx02nTMEFOJO6QjO+xpMRaY\nwaBJlCI9JOY4QLEXIy7kOcR1UvIeRBzyUyGMRotp5hh3lykbEfLRJK1MkKf1F3igep7huRXiYh7X\nC56hNillj7STZaC7g6T1aOo6MTnPANs08BInT9q/Q2kwiKMJBKkwJqzxmP97uAjE/mJh6P9v6iHe\nOkG3xrC4yRoiDcXPVGKB+7W3uM+6QF3zUiZIsFdl2lpGQCDhlvjGyLOoSodp7uClQVZKct13lNzR\nFGrHYiS1zqJ3moI/ihBxcTsyrgEEXFxZpGYHuV47xv3ieYLNKt997mluz0yhnjJhRyAnpuhEdO7n\nTY7zLmEqXOQ0XTSCVDFRqat+umEFq6VhCgpK0KTb0rC7IpYmE/XniekFCk6MJp57Hd2+vzENCAAJ\nwMvdn2MAJndvh5Tl7t02uh/I1v0g+ysLWxCEIeDfcffbd4Hfd133NwVBiABf5u5Np9aAn3Bdt/Kf\nvj8V24MzFcL+El6vQt3w0oslcTrQ2vPiKDKC2MV1Rfa8afL5OPobbXasASxDIbSviOy1ENs95r95\nEM/H6iipDnZIRBsIEJ3tcOj4JU5NXyQqFMn3wlwtnKBYOU6sO4IvUSOd2OAQ14g6JdZ6YwwObFEX\nfawyzirj9JB4nmdgABKRPdRij8OzV5kMLvA2Z9lmgB4iYco0LR8r3Ul6yAyKWxx0b2JbCtlwnG5C\nwbhT4Kx7gaSTY0mcYmdokMCnO/yM9nk+3foK7qvQCXjIjcWw0yIxJ0+wXaPoRLFiIlZAQMEkZWXB\nFpjQlhCTDneS41QJoNPGdiXOtc6jWDa4YHkVttQBdsiwNymRtPIk5BwdR0fXu0zuW+R0/j1S+Tyv\npM+RCu1wuHeDRKPMo+3XOSFfpeCLUJEDjLLGUa6yIQyTk5J0p1Qy7i6f9H6Dr7Z+FNvahy52/l/2\n3jtKsuu+7/y8VDmHrurqrs5peqZnehJmMBgEIpIEg0gFyrYkipJs7lnTWunQkne9x2e19rHX0tHq\nyGtZtLTiUaAoUhRFiqAoEBkYAINJmNzT0zOdQ3V35RxevbB/VBe6MIZWlKGxCFDfc96p1/fde+t1\n9e3v+9X3Fy7Nup161U4lZ6NZV1it9nNj5QDdbNLfWObpP32S4hNufPsy2LdULA6dWGCDh82X2M9l\nyrh5zTxJDTtuSmxUeijhxDZUwjgrUc/YSaT70FYU9KYAgsbByJt0+xLoNRNR91J7Fwv/3a7rH1wI\nIFvAakfxqDisVdyUECsGQtXErEHD8NDEC4QRCCPgxARaeloaSCFTwyIUER2AQ0B3ipRwU2s4UIsW\naNRAU2Fn5D+ghe/Fwm4Cv2ia5mVBEFzAm4IgPAd8BnjONM1fEwThXwH/687xNvR7lpge+0sO2C8x\nywQ3mMRAYvHNEZLfilMZdCI5dK6qR6g/ImGbrrL/SxdYlIeo+m3MyyPkVrvIzQbR12XkiobDUoEo\n9P70OqEnMpzefIA3cg+g2Jtsprspu53gNJAUDT85YiQ4xz3kqiE2U324unI4nSWcVNgmgomAhE4y\nFyPYyPGzoS+wao1zkwl+ij/iIod4lftxUSa3EaK47mfv5GW6rEmW9QEeWn2dqsXO2b4jLHCba4Ib\nXZxlQFjmp7x/yJHpN9nbnEM/C9UvwcV/uo+l6VFkq0p8ZoPqtpvfPvhZFEeDPdxgH9eJb20wvrGI\nMWlwzbOXsxxjkCU0ZF7VH+DDbzzL4PIG6LDwSD+rI31cJ8J3u/azx5ylJtm4t3wONIFvez7IF0//\nHKm5CMKn6wxElpgXR/A4ywyyyCCL/BPpS1xjigscwUmZTbpJa2Fy3+liX/M2P/roUxQ9PgY9S0wK\nN8g5A8yl9vD8H3yQrBCibgwj76shOVVkmgz9+i2umtOk0t0c3/s6exwz9NtXSMkhnuUJ8vg4p9+D\nIYhYUDn74n1sCD24PlSmueTEXqjTF19gs9pHZisM6zK3zXFWhX6qFzyMTMyRfHdr/12t6x9cWCE0\nirj3KL0/fpsTe1/nE7yA/7kSlldUGmfhek1mxbAAThQUZCQ0oFVsuQlUiKEyYtFwngD9IYX8B1x8\nk09weuYgS18Zx7hxDrbm+Qcr/O34GwnbNM0tYGvnvCwIwizQA3wMeHCn2x8CL/MOC7upKux3XyZA\nBi9FAs0chbkAxbN+CudkfCM5zF6TdDNAU5eJWWoMH7tNpWGnajroE1epJPw01uxggSYKjaYVQTao\n2R2kDJnE+ThVhwNh0ET2NBCDGlZnnai8iXVLZWuxF/tEGewmVnsNWdLe0n23iKIhI6PRb1kmLKRo\n2iXWz8YpJrwIj5qIXgObUeeEepZrwgFed/ahWJoYokjWDCA7VAJylS6SVHEwzwiCAMNLS3QbW4z1\nzmJf0BBqIE9DedhNVbIxdXURd7VCPWil27GBu1SmP79BWMzhb+RxOGpoyxKERJKxLgp4gFZ9D8Em\nkA6EeMNyD6pDJkMQKw3sNpMmMqv0UZVcBMwCB9TrzNoPcCl4kLi8QIRtqoKDnOwnmM5gzWrc7o2z\n4eilgos8fqw02M8VcnRRFZ2krQFMRcCuVLFTxUGVstWNZDGplW1QdBHsTZG0hLkpTGA/UMFTzFOv\nNBkILuC15EiZIea1YfJaa7eckuCmS0jioUgsnCAopIlLy7wUf5x80E/YvY3ZJ6K4GqiKharqwFpX\neTT0HIfd57n2Lhb+u13XPxiQweGA6X4mBxYJJVYZXTApVtZIZdeJzm4wUZ0hyCLOxRpyVsOqQ5RW\nCRqJ1uZDEq2nI4DYmhU/4DHAmQFjQUZ02RjnHM3lKpHcDWLqHL6+LbQnRJ69biMhTMHlFahWYYf+\nfxDxt9KwBUEYAA4CZ4GIaZrbO5e2gcg7jSlWfK1tnwgjYBJXV1m/NoR+04Kk6gT2JrE9VKWsOEmv\nxJDK4Avmidq2EDA5xEXSiRirm4MQA8MholVkdENiY6mP5kUb2usKhECwG1gmasi9KlysE5fWKawH\nuP7iXu4NvULvyDpdwSSSpGMgoCGzRRTdlAiZaQ5IV3AKFc5zlKWXhhHOCtw6Mo7qtbDXvMFn6l/i\nGfcmt/39yFITTVNoSFZqYQt9bHHcOMu3zAOs04tqWvjE/HcY1+bQ4gLqugUREeN/ERF6Jby5Egdf\nuk7tmIJ6ED7FV3BtNHAt1rEoKmq/SHnYiuUlEKugxhTOcAwnFY6L56iN21mZ6ON3Qj/DHmbpMlOM\nGTc5YFZBMHmN+3jF8SC9WoJfK//v3JzYz7mxY4TdLX28vQGyK1nFNqfxl/6PsuroJUaCGnbCRpJ7\njTNcHzpMQorybd8HuS0OUcGJgEkfq9j8NWwna1RPmYhZEVt3ndvaKDndT02043Xm8HmyuCmyTi+X\nOchqM07ZcCGJBsPKAn2sMSguEb13CzclBllk+egol6s+5KpOMJDCGq5SUVyk5rvpqW/yMw/8LhPy\nTX7lv3/dv+t1/f6FjChLWD0qVtVEdlpQH57g5MPLjJ+f5ZPfucL6qSaXsiBdahHwTVq7t0Hr5yYt\nIUOmRdzGzqu5cy4CGWCjCcpFEC5q6JQJ8F2O8132A/eJMHDAQu0XPSx/+QnKwjjW+QRN0aRuEVCL\nFgxN5weNvAXT/N40op2vja8A/840zb8QBCFnmqa/43rWNM3AHWPM4UNe/AMOknTh3BMnMBZhZmuK\n/FIAlkQsPQ08A3kCwym2K1E0U8ZryxMW0zjECgYiS98ZJbnQDXtgz/g1As4MVy4dxNLVwG6tkfxm\nlGbRCh4TIaYjjJqIpdcYeSiIXauhlqzUfVaqmpNKxoPiryM7VSxikyYyvVqCD9aexXu5QKni4tID\nB0iUujGqEmM9c7gsFaxmA7+eQzBMdFXCma6TcoTYDEQ4uvkmYSGNGrDwe2/uwXL/IXzk6CkliJpb\nBF0pcpUgec1P2eYiowRw5qrcf+Y06qhMacKBQpPtRoSi6mWEeRSLSkVxslmKkZBjbDu7qOIkSJoR\nFihq3lataDmHiI5Tq7FyapM993upK1ZULLzOCRqanZ+ufolZaYKbyhiD8iJ2sYaEhoMa9bqVXCPI\nujOGKisoaDSwUah5yebCZEshTBm8XWmctgoWpYmByCBL2LUaK5V+br+YpTL5GJZIDaWoIZVMDJuI\nPVDB5S/go4CMhomIYBhUcZA3/FQqHrqlBIdd54ixiUKDMi6+u/xRbm+MYU9XMd0iRkDEiIoIK1dx\nLF0kLq9Sx87cN+cwTVN4V/8A/53rurVZpmenJbxz/I/CGhC/S3NHcUZcjH58lYn5BaJnEix5XNid\nRXLVLSaKJs1Ky33Y+cF3ErK2cy7RImdh59WgReziHWPa0NgldCdgcQk0e0TO59x0ixGGSmU2j/cw\nOzTC7W/FqSZL7HxJuou4m591J1I7Rxs333Ftf08WtiAICvDnwJdM0/yLneZtQRCipmluCYLQDe8s\nKT7y+T1E/9GDfLf5IUTRICImSFX3oV+IU3omgJoCzZbFemyZIX+DcsPFxkqcoHUB0V6k5PTiFey4\nUyK2exrE4y7Euo7AIwwfnKE/tsCLSx8iuxEEH5h7DMwhARYEmvcfwx1K43JVyIl+6qUg+lYQuauK\n373FuDRHDTvTZZ1/tbaBw1UhpWuc/USJdMoGKZHeaANnoI7mFllhmqCeZSS7QPzbSTZ6JW4+EOTY\n6wai1cfCgUFi1l7GfqSPI9UMftFKWLTTI0jMWwPclMeZZYJBCoylbvPIkEhpzMH6eDfbROjCjYDB\nOCV8m0Wa21ZOjUxhcw0RxIuXAiPkmUTjDGNYUDnJq61Ii7zOpbUS+5+MUfC6GSyuMCWUyBkW/kkZ\nZn06sz6NHkSyxKlqTh7Mv0bS6uaye4gDKEjoKEAGL/PlUa5mDmFr+MgJPratfrptm6BVqeft6N3X\n8PrX2A9kjTTGvT9Eo2JBXVUwcxJ0gziaxT+4QY/jJr3SGl0kCZBlnginjAcQCl1YxDSyN87D/Cke\nirzBcZwzH0d/+R7KXwXGaMWBmzDw6dtMHrrCMc4xzwhzwme/53+Hv+t1Dcdp7RD894W/y/f244mK\njH4ggWfGgj9vMB43mM4WGTA2uJWEmgHngUlaRKuwS7adhNx2E7bb2mifGzuvEi3yUTva6jvjHDtt\netlEm9Mpk+cxMc8+GywE3LwZ17lltZDdH6I46ebWyz0Utwwg93f4mXTi7+Pv/H++Y+v3EiUiAF8E\nbpim+Zsdl54CPg386s7rX7zDcK6o0yzVT7BYH8JhqaI4m4RcaTRslBIBuGiS3/ZT6vfy0RNfRyjC\nyrNjzNgPYgREiMGBYxcYj80QELO8UTrBlcpBhP0y0Z5NRq23OD32UGsPwT4T6XgTMy1ivCizMDvO\n2nAfjsECQSWN01NC9GigQw8bPMyL5PERU7cxsiLV+6xYohXutZ7G+YyK40IT7oHN6RBz7mFWGGBF\nGiBrBHFcP013LUH4aAJXpclVZYqn3Y+iSbeZqs/wyeRTCLIJsoAhinQFMiTlLCYCe/XrHPVdQHqs\ngYGTsuriNeUkU8JV7uUcGYJIt02iZ7aI+rYpO5w4qDEsztNrrOPRiwxKSzRFhRIeJHSEiomRFNGK\nMpJi0LWc4yflPwUZTEMgZt2g6YSMHGReGKXQ9PPI+mv0ereouW3ohoRDqOERCgiYrLj66HOtcJtR\nZit7KSV9ZDIRzG2R5qxC9UE7m74Ik/oNFG8dTzhH+qUY5rYEMogug0reQy6jEpZfY9J2o7UZA0ma\nyKjio3T716hj4znzMe4TTtNlppjRp8hbfK3/5OsmOAUEw0S+otHVtU300DYFvDio/q2W/9/1un5f\nQBYQrBIWNUJ8GD7xf8wy+IVT2P/TDNv/pmW7JgE7rUC9Nsm2ibpNtPLOefuw0iJ0aFnNTVp/Tgtg\n22kXdw6tYz6JXd27bW1LO+MMAy5XQf+zm4z+2U2OA9UfmWTxsyf5k5+Z5nbGRLWUMOs66O/fyJLv\nxcK+D/gJ4KogCJd22v434D8CXxME4WfZCX96p8G3nt2D0jhC5SE7E703uZ9Xuc4+kpVuyJhYfq6G\nMKVjxgQc3goBb4bjP/Yqc41xko0oZl1h+Zlh0rkuLHGVrCuIHDBxDGXIBd3c0sapH7fDElibDfq9\nt6lqbtZlYA00LFRtXqwRFYejjM2sk70Z4SZTNCcVHhJexuqq8RcTH6Zo9yBYdPqEFfYdnmPAsY5w\nDW4EJ3ll6D4sqKQIM+8bYf0zcU5cP8OJL5xBOmrCIAiYrew9h4X5WD9uoUhDsLIu9JKyhMjhpY9V\neha38ecqyD064RsFjOwKm09cQ/ZpzDFBAQ/6pIInXOKweoW9K3OUrC5eCZ7k5eTDrM0MEj24jhDR\nyRLgh/gmU4EZ1ka7ORKpEsltIV3TwQvNuEx+wIlztsrYmWUSH6hQ8rlJWyrogwbLSh/Pa49xbfsg\n3emEAooAACAASURBVJYE94dfYh/XqWHnBpMImAxYlwhHUoT1NGlnmBd5nLAvjT3f4Nz1k9RyKWxV\nFWHWBDdYJhqEjyXoDa8RsOR5s3QPFc2F4m7ipIqdOoMssZ+rrKp9fKv6cX7f+RmsRY2F+THSza5W\nsN2nBChB0Jfi8L89y8MHnifOCpc5SA7/Oy23vw3e1bp+P0CZDuD8pb388O9/h6PnX6X+uTTVpQw6\nLemiTZ4ybydTds6FjqNNzCItAm5r2CJvt8bNnb5t56OFt1vonbKJwq6z0mTXStdpiQf6t9fwX3uW\nz9+8xNlH7+drP/Uhyv/3HOqFDLuPk/cXvpcokdd4+7ebTjz6N43PrYaw1gMMS7ME5Qwl3Dip0BXZ\npnLCg/iYijTYRNY1NJuILov0TSyxPtsDG8AWGDWJut1GyeqmXnVgNkVMl0hC6iXnCFIfULDYajhq\nZRy+CpqgIAR1TNXEyEloVQuyruGkjJ06yDIN08oqcSR0/JYs+aCXeYbIEqCBlUBPEY9UQi7qyIJG\nbGmb6Oo2m905FsYGyE95KM54UJ4xwAreYIGx2C3y6+uEFsMsj8UZziwhYtAIyFQFOxVc1LEhVARs\nmSbYQGo0cIoVbNRJEWKLKCoWmiELhk9g7/YtwlqKvOilgoMtMUpSCRMUt7DSREfiauMARcHHVuAs\nV5xxgpUstvAVPNUKuYKPlx33MmG/zZg5j1AyMDWZNGlyXi9bShc1zYYmSqTFILPsIUSaLEHShOhj\nlbi8hkNubW3WlGX8QoZezyo2rc4teS+yIKHYVIQhHWekSGB/hnjfEnud1/HVC1xbn2bN3UfW7SdF\nCBmNMW5hpYGNOr3iBiXcJHI+Vi8MYvYJSD0ayscaNE9ZEBQD+aSK5hOpYaeBlUzj3WnG73Zdv3fh\nAXo4secs3Xs2KNRUpppnGMicZ+n5t8sabStY5+16c5ukxY6jbQ3b7uh35972bQfknfO0HwA6u07L\ndnvnw6KtkZcBYb6EY75EnGVKTYXD9SiesXkSRQ9v3LoHWKeVlvv+wd2v1qeA65ESj8WeI2kN8h0+\nzAlOM3b4Js7DJWqCHSsNfOQp4qGOjQhJ5CvAazLClknkn20QeCxJUXCz/Uac3MUwpcUgpSkfTOmI\nTg3PdB6vM08JJxWbDWFABbuBaUpIkkFISBMhgVVQ6R1fp4adbSI4qBIjwTHzDAvCMLNMkCbEqqUH\npa+Os6/C3ls3ePDUafg65D/oYmMszFX2EyhkMGdBKEKPtsFjkymal2pM2Pt5afQ+RhZX6TLSCEd0\nDEkiSRfXmOKA4wamTYAc6ONQ67aScERZp5cGNiyoJOliSRokEM0SFpKkRQ86AkM9tznac4YwadyU\nsNDgt0q/wEvmo+wzFvhjfgJrV4N//eR/YOTlFTZSPfyu/ll+dP/XGB+ao2srQ3QjQ17w8OLkSYqK\nh0n5BtPRyywxyAx7CZGmgBcToZU6zwIBsjzDE6zZe4jFlxnmNpKpc/WefeiLdazddYSfUQk7Ewy7\nFugWNhlnDp9WwLFRxegSqcdtbNCDkyp7mOU5HqNicfIB5UUMRBYyYyyfH4MgyPtUfP1JiltBikkP\nF4WDZPATMxM4qJIsRu/60n3fQRAQ6EEwn+SfP/kN7nV+jWf+Z9CrsMQuMXYKCm2C1DteOy3dtmQB\nLTJROvrB27XsNgHDrkX+TpJIOwzQ3JnPQktmse+0qTvX2xLNDaD5/Gk+/sZpPvwv4HTgH3H21kcx\nhacwKcL3GFjxXsBdJ2zHwwWEHpU3LQc5yjl+Wfs1vrHxKW5fHqd+xYb9x0uMjN1iLzOtncrx8yZH\nGDtxg5HROep1G+vlOLnTYaYOX8I7WmLZOkzmWgStJMMtATMoUcn6aQpOBM1Ek2TMogVzTqS/f4np\n2AV8tgzdJOhnlbMcw4LKMc7SwwbkBJy3mvyw59scCl4nGfRzlnt4znyMh6SXGelepHJkk2gqTX7Y\nR0rvYn9+Fl8mTakODjfIDh27plI7qLDxwS4WhSHSw110mUn6xOXWBrV46SHBWneM7/oeRsBkwx6j\nbrFxtHGRk7yBLohIpoFYA6WmEde2SbqC3AhOIgBx1hlmnjkmqOBkD7OMum9iqzQZSF8nX5phyd3P\nBY6QnuzC0ajyWft/pSkqPOt6lOneq1iaKilCbNh7kNAYqC7TfzaB6ZU5c+g4t3YcmiPMs4cblA03\nv9P8LAkjRlW047DWWGQQQQBDFGkKCpKs84DvFbZu9XB96xDz8Rq1qItJ9zWmp86zrXTxtPohwnKK\nIXGJQRYJkCG3GOT5Nz6MGRaoOWzYf66AanMQI8GH+Bav7nuEW+VxDKvIanKI9VvDyKc0ivtdd3vp\nvr8gy3DyGMfJ8M/PfQb30+e4CoiNFiHK7JJsJ721CVfeORzsRn5o7FrRbTLV2NW72yTf7BjDTntb\nsLCya723nZUWdh8cnXJMY2esvtOn/X5tmUZswNVvgcc4ze8pn+a/3vdJzon3wqlzoL0/wv/uOmHb\n+uroikRaCGGnxgGucNp4kLTeRbMpEzPWiLGBgYhCk65mmv2VGaRok0afhS2irL4yQD7lp96w0xXY\nRlJ0ymU3+pobVgVkf5OgmMGn50kbIcrbHlgR8IQKuGM5ZGuDctYD8hbDgVbNkiIeAmSxoGIgohsy\nE+XbhJQsL/hPsinGWGKQAZYpu12s9vdy8sRZSmEn9aad7uU5nFqe+pRA44SMPipTE22sxYLoo5OU\ncVENONAR8NFyNroo4yeL3ValarGTtgTYEqI4SnWGZpfxBvNUe2xUTBfuZg1PrUJSDFHAi2iYpNQu\nuoQUfdY1NuhFwMRPjvuk09gklYxZZ8BcRkOkgpNq2IaXHBPCTV5IP8Yr1T2Uo06GPIvIaGiI+PMl\nhjZWiecSrNt7CZClju2t+42xyZZpkjZDZI2Wbhwwc5SE1i7xk8INNtmmy0xh0TTsWgOLrlIwfKya\ncTxylnB0m4zuZ0WbwEKTRK2HQilAvuhj+2qMhXNj+I5lkWJNMExwGviULIe5SHIwRq1pxa+k2DJ7\nSGox1JIFUW3+/y+8f8BbsAzYcUx7iTgzHNo8z2Hhz5mdM0lqbydj2CXTNnm2LeJ2Hxu7EkibgNty\nhUmrRli7r8SuhQ5v17zbc7eJ3GT3gSF3tLUll7bV3da52w8EgxZ5K4CpQWYWguIKh+RVDkl9FGOH\nSX40QOVikcZK/d1+lH/vuOuELTd0yik33u5b1CQ7q3I/T/Z/i/vjL5F5MsCkMssGPTzFx7BT40Tl\nLP9m6Vd5uf8ErweOk8NPw28jJwZ4RX2Ax7RnOei4yPzeYWpJO8KGiL2ryKHuMxwSL7U2Fvj6JKmL\nBvH/soi6V+KvCk+iX7Nz0nmKe4+f5hAXSRDjLMewU6PHt0HmHjehVQO1biFpRrBIKmFSlHBxk3Ea\nTitdx5I4hQpKUUW4YmJ1gvw/CWQecJDv8ZCWQpwXx/HzAEMsMsAyYVLYqDPMAk1king4WJnB3azw\ncuAEe6UZetMJPF+rUD/hYHO4izlznEFtjXF9gbOBQ3gseQ7ql/lC9udJKml+OPxnTHIDEYMI2+xt\n3KIg+viN8AD3u9OcoJV0NGrexkWZGWEvr954iFMrD7H6ZJwfC3yVB3iVCNv0L2wwdnEJ4ZhBpH+b\nI1wgTYg8PvL4sFJnRJrnMek5Xmp+gBx+osIWVRyESfEhnuZ11nCrXfzJ1qcZ6b3F/ftf4Ka4B4RW\nJmk3WwiSgVsqsY/rJLJ9fPXGj2LOCBjLIkLOZHh4DrMqcPE/HoPPNrEMVPEJOfaFLuMlTVDIcLHr\nMHW3hWx/CN28+2re+wWuh4MM/Oogj//sf6Dvldd41jCxmLtk3CbBdtJLk10rtlPuaDsC22PaxCrT\nspRhV+Joj+90/bUtZdh1TrYfu+2+nYHH7Xna7/FOaIcYtu9PBdIGrKgm+1/+fwh85D5e/OIvsfBL\nq6R+f/Nv+KS+/3HXV73FWmcsNMMHlaexUuMNjmOKIqYIomzQwIaKhR5zg6tbh/h6vZ/57hFW6WUj\n0UMmESGXCGFkJOozHi72HmdhoAB9AoNH5nGM1kg4I2CaSIJG2XBS89oxwgJpR5i4ssxH3N9G3mNg\nyCK/z2ew0kDFQpYAT9x8gZCaZ3Wyj0RYJ6cFSMmtCn52akTZIsoWiqARllL4Xy4gPSvgtNaY3zPE\ntaOTuMN56rKVFGF6WSfECq9xHzVsiBgMsEzPxha6JnO914OgmgTSOe5dvkCx10Eh5OE7P/o4SqSJ\ngzIeoYhHK6HXJQqml4viNAW8GD4Tq1jlGlMk6cJEIEGMEesCoe0cgzOr3PN7SVKeIG987B6KNjcG\nIm9yhNqYhX2xyww6F1lkmHXiNLCS7Q+RdQaoReysOPpYYJAJbnK0/iahcg6LRyVr8REjwVHpPDJN\n7uE8s+yhghMNiRx+ckocMaRiWg3qso0aNkrzUZIbveSnV7F7q4xyCxt1NEmmaW9lp+IzEPway7Uh\nJEHH/rkS2qiAIbWKAR2vneekcYaC08m2ECVv9fHxyLdIGl08dbcX73scNh9Mf9ZkwHuJrl/8c8KX\nZpB19a2klrY+rNEiOthNeLHTsqbb1mvbKm5ft/H27MbOZJm2Nt0m2s4wPY1dcu2MHIFWskzbOtc7\n2hXeLtm0522TezuWu9PhKQKmruK5NMPhX/hN+ieHWfnlMJd+R6DxHvZD3nXCjiurHHW/yGEucJtR\nrjFFEws26vjIo2JBxKCJgqYpbEpRFgJ9NFQLatFOo+DCzIiQFtAbFlYtQ8i2Jk7yxLoTBPvSlBoO\nSg0Py40hTEUkGtvEN7LKuHyVMXWWfe5rVO0OtmtRFjZHuKFNUbB5cITKiA0DuaGxZXZjddVRseCk\nQjcJFJoMsoyXAk69QriawZGpI+RFSvudpEYCbA6Guc0gDSyYiIistrRpehlkCd2QCTVzhBsZ9KJE\npJbCUalhr9QZUldYCcfY7I4wd2wUCY1Yc5Op1AxOtYwqyQRyOTbqvaw7vfTa1giKKbbMKDP5feR1\nPzZbg6btBfYJNxAbZbScTNH0smHEWBb6qOLkFmPYonWGmWOSGTIEWWiOkE/5WbEVWZgYwkCijhUD\nkRgJDlSvMrSxzvxWPxlfELNXYEBcRqk30bIWVJeVmsNGSXajUkOWBdyePA6hjI06IdIoDQOhLBJX\n11GMBpoooyNh2sEeKqNWbeiIEAK1YkVqaghuAxZlqgUnq0f6GDJX6TJSVMxh9LICqojfncUmv7s4\n7Pc7PP3Qe0jn4OgWfdeu4fjjs29Zy+36Hu2jbcXeGf3RJkqZtzsP77R423N0EirsatAKLVJtsKtx\nt2WV9mv7vjqv6R19ZFoPgvbcndZ+Z52S9qt1Z7xzNcnQHz9L9BeO4d23j/LDXaxfVMivvKsE2b83\n3HXCPsnrfIrXqWEnj48NejB2NtptYGWay+Tx8ZzwOMOxBSKsc1scQVdkKqKTtGjB3LSARYKHTLAI\naGmZ0reD5O7N43ioQrdtk410H7O5afb3vsn9E6eoTf8lvyj+IZZ8g3V3hAscYTJ5k8+f+y0+W/5d\nnut5GOFRnfykiwweCoqHYZKESRMkQx0bCk16WcNBDauqElguUzzgZOvRMEk5jNNS5QSn+ff8a/L4\nOMhlbjKBm/2ESREiQ0zdZKKwgNZlYjQE7v36BRSXDoNgTkM1ZKeGDT850oTYLMd4+NXXscZVClNO\nHnjzNB+wvUZ51MkznkfIiR6cRoWrc4e5Wj0IMZN4bA13pMTl/X6qP3KQgugjY/eTJkwJNxI6Nup4\nKbKPGTRk3OUKv/PK52jGZYZOzhFlix7WGWCZOKu4S0XEeYOh2VXy8QBP/9QQfcIqa+l+fu21T1Pf\nI9E3tETIlcHDAoPMkBEDdJNglHmGWEQaNwgOZnlEf5E31ON8xfYpLKhIbpWIdY1kKU51xYWwLDHw\n0ALmgsDMr0xj5kSy90W4MHUEu6NOkDTXhCmur+5nNr2XxT0DHPRevNtL9z2N4Sfhoc/V6f78q9hP\nLb1jVLJOK7uw05mosWsNw65s0baKO/XmzgJPbX1ZY1ebljrGdTod2+dtUm5b5m3ru23Rd4b4SR3z\ntiHdMWe7z52avAoI/+8l4g9m+PhvPM5z/8nHuS8ovBdx1wnbpxYIFES+5nqUNxL3kVzrITCZpCq5\nyOYiOMNVakkHm+f78B8v4O3NEiPByu1hymt+zKyC4DMIj2xybPAsgmSSDQa45R5jsHuR/uYyZzMn\nSBW7EXTwkWdEmSdp3eaFyCPM3xoj8UIPkYcTdHvfwDWeR7yqUU87yM5HuRHdR48jwdHyZfJWNwkl\nhp9ca8eUpkGoUKBitzNrneCNyEn6bCtMey5iQaWJTB0vXaSQMNCQGWSJe/grtomwxCDPKY8iuUz2\nFm/gMYusPBxm0T6I4RU5FjpLUM/SU9jmiusgXinHVPk63lMFrPEGgsuk1m1hyxNh1dmHQyqzku/j\nLzc/wYa/m8HuOU66X8diq3Nd2se8JYXuakkV60YPDWxoyOi6RFxcoyI6Oc0J/ORo2mT0SUgTpLGw\nn1V9mIA3xUpwkambs3huVWEB5EEdeUJDFAwMRPCZWKfLnAieZ8R6Gw2JJXWQXPkQE46byKLOQmGY\n1bNDRHs36Rtd5rdzn+PWlQlu3h4n8aFePAN5BuRlSo4gVdWFeVtkMxrHtJsYPwFBJYnSW+dq7QAe\npciY5RZuSoQj2yS9YQSXRkx+7+uRdwNyxELgp3uJOq/j/7Xnka8moKK+RW5tYmtLEu0oi/b1tsbc\ndvi1Ldx2xIdKy3q18XZS7CSSTqdje16DXYsYdq3g9rX2zyK8Vee87fxs1yjpjPWWO651PiDuTJd/\n65tERcVyZYvqr54iMvg4kV8eJfMHCbRkWwx6b+CuE7a1omJfFUkNdbG1GaN4LojTXkaVbKQ2umn2\nyFhyKraESr7qwzRM3GIRqWLgyNcJlTPUhiz0jq7wiPNZ6qKVNX8cW2+ZYC2HVDBRKgYOqlgcdXxi\nHg9F0hg8qz3O61sPUHrTx5OHvkm9x0JxxIEjW6Yvt0J3apumz8KmPUZMS7OuxCng4ggXqGKnZHoR\nVJmGojBnG+FPbD/OlHINt1mgR91ERqMsuThkXCYjBtFlAZUi/awQZYt81Y9qWElZgxSaXsp2J6fH\n72FF6sdJmWHm6M0nCddzFJxevOTx1nNUr2nQMJBqBo0+mVVvjPMcwlsvMpea5KWlx3AeyHGo6xw/\nIfwRc9IY19hHEgELPShmEw8lMjsb3YqmgWUnHeI2I4RIY7U26B5bp7TmIbXUjd21jGazUNS9WFI6\net7CkrMbdcpCdrhVcdFDEdVlYWjiNuPMElQzXEodZrWmkNZGmDKvs93sYiY1xdxrU/ROr5Dt9zGj\nT5NNBzFuCRgnwaZVcUslxIaJKOhIXo3MrTCGT4ABHctoHTNskjS6yBhBVCwEyHLAfxmvUWBV7qVX\nWL/bS/e9B78Xy4iHgX11YmeXsP/B5beRZ2eI3p0ZiW0y7ZRGzL/m6LSsDXbD9tpz3EnYbXRGn3Te\nR9vZ2Bln3fledPSROsa2JRPpjj6d0gjsxnMbG2XU379O7+fGyd8zysXhCJpahPx7R9S+64Qtpg2c\n52o8FH6FjVIfM0vTbAp9mKaAkRLJiBH6Jpc58pMvc0PZw2qzD4+1iG9PhomRGfYYs9yyjmFRGsTF\nNVbox0mVH+HPeWHrCV5K38eDoy9Qc1jJCCE8cp4yLraaUVbPDJHfDiEe0Sn7XSSlMGv2PvqPzTNa\nmOMnU3/KZWWSa/Ikpzz3UxUcRNhklFssMcibyhHmusaZEG8SaSQpLId42fcIxZiHf5v6d0wIcxgO\nkSl1joLVRcIX5leYQOceHuQVfm7jD+huJLFF6iwFejllPcFXpH/MJDMMskQeP36ljICBRWiwyCA1\nA6YqaSJ+Fc9+H2EzibdZoio6+M7WJ1hIjGIWQK9L+BolDmnXcDnLVBQ7JmEqONgjzPJTwh/xFB/n\nPEcZkeeJClu4KFHHRhUHDdHGw7YXcdYavLl9jM+M/S4jsVsA9MbWWege4Knoh9i2R+hRNvggT9NE\nYZU+CniZYS/L2WHWXxvEKH+ZoKfGitjH7cIeZhNTqCsWlruGSJZChEIphA+r1E9aORF5jYri5EL5\nKMUFL4qjgfOf5in/ZgD1WzaoSqQ+FcP+aIXgvhS9yjpRtjAR+Fj1O4hNgd/2/hxe6b3zT/Y/DAcn\nsR+KsO83Ps/g0rm3ane0a3u05QXYjXXWaDn72jU+GuwmpbTlEdglwk4ruC1nqLzd4u7Ux9vk7+zo\n2ybz9n20+7TvoX0fGm+3+Nu6dNtab19Td44au07Szt+hwtsTdcb/+Bm8r+WYe+A3qCibcOrM3/jR\nfr/grhP2t9MfJ3nfCD5bEt9wlns+8jplt4uq6UCvSxw0WkV1565PUhj2EQylOMZZbkljpKUgWdmP\ngEENO8/wBOvpfso1F5WokzWtj2Qjwg1zEp+URREaXKodZFbYQ1GQeXDkBe7rPUXB7mPSfw0/eS4I\nhzHtEDMSxGtrNGSRqmBlTYizV5uhi22uSVOsCXGyQoCq7CBJGEGGWNcaRbubmmBHsBpYsipiAnDW\nIWSQx4mO1NoMgRW8gSx2tYxDrGFVGvSrq/z08h/TwwYuZ5H1rl6y1hDIAlFxCx0Re7jC9s9PoQ7W\niMk1IutpRmrLfFh6Dp+zzPzACOlwiGZAJGpJsCbHOCXezxo9HOZ10sX7mNcnuOKdplvc5CFepiFY\nW3HZOIiyyXhxnnA1QyMoUer2kpP9qEGFmmzHp+cR3QY12caWL8IGPYjolHDjoUicNY5zhh7WuWQr\nsdgzQnPeQWEzSCHiY8g+z0D/Mls/GiXZHcZ0waPW51isDfOGfh8lwUNdsmLulGoTrCZiUEfoNloF\nvKoCmqGglyUkUWNLiNBFlH1c57K8n0rTzUe2vkvQ8y73m3lfwQPs5YHlNR6s/RnW+RnspfJ/I120\nLdjO6A47u9Z2OzyvLS20iRR2HYJyx3nb0XhnzLbCLqHeaZkrHXO0r3cWjmpDZDehpzM1vf2enRmY\nbU28Ldt0SiGd+nebzJV8mYGFG/wLy3/mueRxTnEvcJ3WPpPf37jrhP164yQXwj/MA9LzDPYt8ODA\n81zT9rNlRjEEiZPSy2zeivOtF38EV1eW8a5ZjnKeheooq0aMoDcDAlRw8goPsl3oRStaqITtbAsx\n6ti5oe+h31imW9ok0wxSFR1oYg9Hx8/SI6yzSUuXruBk0Rgi3MzQnd2EJZMeJUHVYWVd6uXB+qv4\n9Bxfc/8YuiARIIONOhI6qqLQE13FjQe7USPn8rJW6IGiSJeeQnQYWHQVl1kmTAofebSgQEFzYNRB\nF0X6qus8vnCKmsPGciTOpdB+ShYXFrlJN5v4jAKKWyP5w12IogWhUYOySPdqkmgmxeD0IrN9Y1zr\n3wdAVyVJNuVjw9qL4ZAYN+fwNpa4qh3gkucQD5ovM8U1LghHMHQJ3ZCpyk4ijSTT5Wuc8RzGHq7Q\nH15AUE3MmoTdaCCZBk3BQgl3S2pCZZsIOiI+o8C0doU+aRWXvcrqQD9rLyaIJRK4gyX22q8T6d/m\nVv8Y84xQwckQC+SrQRpbLla1AXAbiCIoLhVTAn1DIdSfpqlYyahBDK+ElVYcfFKPMFPfS3d+mzed\nBzF0mZ+c/QqFfufdXrrvGTisAgNdFh7LneWxxS9yhZaF2hnhodEib2HnWptEO+OqO2tXt4n9ThJu\nH3Z2rexOh2RnuGBn4kw7wqNNmm0ibpNvZwRIW2Lp1Ns7k2wEdtPTtY65OsMBO0MR259DW7bRAFdp\niyPnvggBkXTfMMvbEtXGnRW6v/9w1wk73LXN1nU7Z3zHiFo2eER5gVdKDzHXnMAm19h2RSjZ3Qjd\nJhaXiixpaMg0Nh0YTQtOV4WmrFDfqbEh2XVqhkJS7KIsuBBkA7u1TlV2UBZcfNL1DVRB4ZSUICf4\nUGgiYrBJNyEjzY81v4Z1y8D+UgPjtwxsn2/Q/ZEU064rRLMpArUsn3R8g5QYooQLGZ1NullmgGUG\nWhX5RJUz1ns4HT9OPWDn07N/wlBmke5Qij5jjShelhhqZXBKIjlHgA2hB5uuYtSWudE3xrWBSaqK\ngwI+ZDT2MsOIukRXIYu+IiPaDcQunUa/RHXWiutP6/Te2iL3YIAbj+kc4iLDt5bp+nKOgb4E21Mh\n/shw86T/KU6arzAjTtJrrBM31liWBzhevYClofF/+f4lkt8At8HvmP+MouZhgjme2HqR8eptFLOJ\nvVSnEnCyGe7m4/wFcdbI4+cqB4ipW3wo8zwpX4RueYsvCD/P02qOB0pPcdWYQEdEwCRGAisNknTx\nDE+woI/TzCksvzgKFjDGBHxTafSUTPnLPj7y2JfhuME3G5+knnTTZU3yuPAsL9ce4uWFh7nw/Ek+\nePIv+Ujw63ieLnLxof3A7bu9fN8TGIos8es//WWk88tcf7pFWu3Mwwa7RNjg7XWpO52Ib6V3s0t+\n7etixzg7u4TZJsI2ubcdmHcmv7QfBu1r7bTytruvTehGR3v7far8t/WyYdfS7qwqKO78jkbHvJ21\nSjpRolXf++h93+DI0Uv8yy/ez8yK76/p/f2Du07YmkWiZ88Kg+55aoKd541HiVi2KbLMarMP3ZQw\nDAGa4Ddz9AmrjHKLKf9lBorL/NDCU8xExrnsO8AGPfR41vDZC/ikDGuBPrat3cSsaziFMh6KiJKB\nnTo+obUDYjSfxJsqc6r7PnCCRVLxVqvYJBVzD6yEe0ko0VYFOLefhk0hL7ay/BJqjLn0Xnqdq0y7\nr3CgMYMmSmgWAUE0qVtt1GQ7F+LTFOsu9qev0aUlGWEeGzXKuNENmYiaQRYMlIKGtKQTkVMUbOtU\n4g7CSoqgkWWwsUZkNYNju0Y5ZKfhs2AICrZzDZKvaVy9ajJZVenp2uCeh86jSyKpUAjlhM5GzwL9\nkAAAIABJREFUoJurwf28ccPBnmaZQfsiTWTsQo2i6KEgeLmtDFPHzkqzH0MRaFgtxPQER7jAPq7j\ncJUxy+DeLqOFBQyPgc2sM5RZxUuBi6FDzNT2YdQlbsj7WK33YpVVHnG+gGKeZl/6Bu7ZAt8Jf5hz\nvqN0OzcoSm5ShPFQJORLUhjz4VXyNEWFcsSFP5rG5awilgUqfXb0sMigvoDFrhMjgSQaoAg0FDsF\nvYuL20dxWqqIJ0SuDU0C373by/f7HtYnYlgPuqgv/TnSauYtcoRd6ePODMO2067TEXln5bxO5x7s\nWqqdlm6nHCJ39G9HfnSWXe10OHbKJHTM35koI3W0dZZo7ezT/n3aD4B29mVnrZL22PY9d6a914Hq\ncgYhaMP6j+NYL7poPLPx133U3xe464RdqbqI920x7b7MphjlFf1BPm59ioCQJWsGsAp1ZE1DKJv0\nauuMcpseNhgILWAKMg/OvkrDrXDbN4KORI9rgQlutgrY+02afpE4K0RI4qWAhE6T1lZXDppEyin6\n1hK86H+IrCNA3XBglBoILhA+BomRKCvWXux6nZzXQ0F0kiZMmhDz2ijP5x7nh/gGB2zX6KluI2oa\nFdHKhq+HimKnLtk5Ez+OnNU4lLiK06gSIoWIQVoLozcVgmqeiJlCrBhIRejeSmKERFKxIHalSq+x\nQbSRQsiY5NNeyvusNHwWhJSA5+UKlStNZhWIawLdjTQuLc8b4nHW4zGIG8wwzsXSNOvP1MnUUuwV\nbzBZnaVmt7FgG2aLKBuSTNVwoOgNFs0hKpKLTylf5V7hDQaNJRKeHko5J/5GgUzQQzMo0WNuIBVN\n6jhQfVZm05PMaeM8G3wUteKgp7mBLVxBti6RN9NEEymyhDljOcE++2UqkoMadj7AS4R8aay+GpYJ\nlQYWKqYTS7NJzJ5g9InbXGcfZVyMiPP4wzkUTWWl0k9FdiI7NYQuuJg7SsLWS+4RL033nYU7f9Ag\nAVai0y66D2vMf1UksNwir06dt7MSXlvOaNehbofrdcZIt63r9nlnFEdnCrhEi/A6k17axNi5wUHn\nvbQfCncm2LSllDuTdzrvoU3YbYu5Lbm0LezOeG062ju/HfAOP6euQbEs0PPrVrKGk+VnHOyWmfr+\nw10n7Oqsk5U/G6H3hzboim7xJH/FR+tPc1sYZtMTJSptU8NNe8PdQf4/8t47SK70uvL8PZP50ntT\nJssXCgWg4IEGGm3RIJvNNlSToiTKBUWtViONQruzmpkYxUzETsyuNJpVhDRrZ2MkraRZylBkkGqK\nzVYbNtsB3TANDxQKVSjv0lZ6/8z+kXioV6WmhloSTczujchAZtZz+fDl+W6ee+755rjGPj5onKBh\ndzK8f44lZwIRnS6S2GmSJ0CSLtaNbuqGE0VssYtbHOYiAb3Ah8IRvkuIWTzEfDkGBtdwOmsojSbd\nG1lsN9VO6fgQhNwbKK0GA8U1Sh4XVZeDMBsEKOB2VBkYWuJQ6yq9pTR2o41wy8Axr8MzkO8OkSfA\nk9pb9NvW0MMiOSnMLXZ3aI7CbUJ6nlQoRLhWwBOuw6dgIdZLKhZht/0GdlrYJJWsx8/63i6KO/2M\n+6aINjZw5tvYC21G90D8i+AYE6kPSrQUGwPCIo27re/7uMYuxy3iwQI/I7QJLRbhssFrBz7B+Z0P\nkaSLZzLfYX/5Oqf7jvHtygvcLu+m2Buk4nDTNmwMZNdwSk2au+y8F3iMtBThhPA+r/WcItbM8iv5\nP+HWtQPMCWP4TpUp1uwE1DLHOcc3u7v530/9OPukqzhsJY4oZ0nLUTREYqQ69rWc4yRv8Uf6LxEU\nCjyjv8o3kl9Al+2c6nmTKBnW6KGOAwFIFnu5MHmCYsRLQ3SgxwS4DblsmL/tfYGh/jv3e+g+4OEB\nxnj+z17hhZdeJbmevkd/mGBsgqRJXTjvPux0aAezaGfNjrcbhG/3vXawCcTbgdVaoDTPby02qmxV\nf5iTi0mpWFepMcPKYZucuLbtdYNN7xLY+svCzPKt0r/G3deeu8/D62n+u3/9e7xU+jT/K58GpnlQ\nfbTvO2Dr8zKlS0Em2Usq0U3Ik4einWKfl8ohD2eaJyi7/CQmFpgt76C26kLsaTHb3EFNd/Fq8FP0\nih1pl8khq7rM7eZOJEljzDZDkA0AajhJCCvU0y4WF4Z5Y+EwhttGIrqGU6kRbBdRjBaVG0AOvN1g\nS7Rx6TWC5wvYxhu4onbsiyqVW1W82TR7RgT6u7M4gs17BJuui6SJc4X93NJ301NJsVe/wX7fNW4Y\n40jVXXxGfYV4K4erWkVI6mhRkULQQ83jQpR0uptpgskNMuEI6VAUp9xA8Op4KNPChtYSEVwaSyd7\n0F0C7vEqrVibedcgF4SjeOgUNxOssEICd6PGYO4afRs6BSPIzcQ4k95x1uhBRSZgFBnTZ9BEg6Sj\nB92QiEkpZFSquptAKYNxvUVmxs3cT/Qx3b8bvSbTcNvpa63Qf2uFXe5JsqEgXfIK0+5dRPUkPcIq\ngsPPgnuAOytjENRpOuys5/rQbCA4Ddo2G2Ehh1uroRYUKrIdwQs+V4EuaZ0EK0yxk41mhNniKIJb\noyT6KYa9NFIObJpK7+AqbbeNRkuhHlCoyc77PXQf6Aj2N9j7wjID56eRLswhsynJs+qVsbw2aQPY\n6k1tDWu2a+Wft3crWhtatqtETADeXoi06qO30xPWwqCZOVvd+qzXtd0karvPiXkOu2V/a+u8VQVj\nAFqzhXZrjr4jt3nihd1c+1ad/NJH3JwHIO6/5VkWmosK0yu7Eft0xEGNV7KfIXA0R+zQCjOtMbze\nMjsP3+TcG8fR1iTGu69T1EKUVR9vNU/yefvXiElpyngJk0Nt2ZhPDbPbd5NdoVtIqKSI0cSOV6iQ\nzcbZWI7y3vJJ3IM1jkdP428ViDUzoEHpNjAPnmGQenUkh9ZxjguLSIJB4HQV5W/KKHMw9jR4HwMm\nwJBA9cmU+71M1cZ5v/QIZ5yPUi6GOc4HfCHwZa6pPThrI/Q1/pCmrKA3RQJTJQpeN/luL3mCDBQ6\n3trMwOT4Hm6HRhhn6h6lU8GDU2piC7aZeXEQQ4Qe1vEIFW6yhz/hS4wzxQGu4KHCjD5GoFBGWX2f\netbFnb5hvjn6HKtSB6xdVGk7ZEq6F7dYZYdvCsGnMsgcCi2KBIiqRVqTBqvfcFF+xMF81whTpQme\ntn+bvtoy2rLI0CN30Po1xtu38buKiJKOgzoBQKuX+Nu5zxBNJAlKGxRyYeouO4KsUZT81CQnNl1F\nLSpUHU5W/b30RpboZZEaTjLEWGn0sZoaohETabtEbLE67ct2nNUG/cfmqO92UDACVFUP7Y+Em/+/\nhEyst87zX5rE01xm9sKmAsRUXHS22spLW4uIJohagXz7Ki9m0c4K2NsbWkxwti7hZXLWZsYLm1m2\ntSPRem1mA4zV+9pUgJj7m3SNwKajoPk5rUuPWXl181ymqkSwHMtswa8bMKmBc98Sz33xNOsXR8kv\nOe9exYMV9x+wfXToh8PgerSM53CRjZUYsXCK48JZWi47DqFBQC8w/9oYbcHGjlPTNPwOFgtD5Ka6\nuZPYSTnqRUXuWH8WQrS+46a4N8zSsX5ENGq4MRA6HiCDDR6ZeIelPcdQnFUkTWPfnVuEl/OQAXeO\nzm+hZeh6PUN7h0T9cyLfjn+K3HqEL839BWOJEoM7wTUOtMFYgNZ+gWRXhOu5fbz0lc9zbWCCxgsK\nekXk+up+Mtko1drLJP0xfs/766SFOIO+BX42+uc0fXbaSPgoochNDDsINrgiHuB9jnKAy6zRzW3G\nO8ZJTBIi3+HitSrd6joNu4Iodro6R5jFQYO3OMmJ6nn2FG7zVl3jXdcJ3go/wVVxH3FS7GSKGBmm\nfSNc8ByiYnNjp0mMNBI6ZbzUZDe+wRLVn3ew9MwQibE0Lzq/gRj7Og5bHU+8RPpUgI2AH3elxqnl\n9+jtXiMbCpEnSJgVjntfInI0y67labw3K/z7nTJL3gQ+W5G2KHOTPVRkL3J3jYhYxE6TQ1yigYP/\nwK9Rw8VD4nn+B/tv8VfKZ3kr+SR3vrULdUqhGVdJqnEMBGoNN8X1CCUpdN+H7oMbXSiT/fT86ldR\nV5cpsQmWJrdrzWIddKgQM7tusZWPtgKzla82QdlhOeZ2/w5r5mrK8UzANoHY6kdiNYqydi+aFItV\n4mfqsM33P8rlz+S0rSoUM7s2vUis2myTbhHp+KeYx64DyrdXsF0RsU2fAvx0tNkPVtx3wHYOVVGl\nNvGH1ogeTuIbzFP0p5BVjdXcABFviqA9T0JdweWvsdboZW5lDCMmMOSaI+bNYdgFlugnSoY4KSRF\nJ9nXQzyQxKXWmSrupqD4ETwaOgJ73TdIBC8SDF5GROeM8QgPuS6hKC38jTLOHsADQgAct5rYagKt\npyQUVwu7v4V+0MBbAsVlI7UzhLtVQzFaLHh6qPsVnFKF3uFllkM9FLR+DAFUt0xNdNFKOVlvJrjg\n7UjbglIeh9FCkjUW2/2cqT/KoLhEX2AZZbBFNeDETZUl+kkTY5EB1uimKAVYtvWzLsQZZBFR1LHr\nbXwU6RKT9xYEvshhElKShH+VdpfYWWBBsROgQD9LjDBLmBzfaT/NpfYhdss38UplDDr3tGs1Rdd6\nmvKYh9tDY1weOsRBLjPUmCRS3iDtiyArTcSoSlxMktfD3HEPEzcyhJs5Zu2DODbmGV5YZGZgB4Oe\neXpbSQ65LuJ2lDAQsKGyQZhlIUHd6aCU8XF99RDZeBf1gINFZx8PcY4e+wrpUIhcK4Lc1jmSOI/m\nlVAjIrrdIJeNUkkGaK46CXZnf8B10//LjcjuJjt2ZtFfS2PUaluyyu2KCnN5LdMxz8ymt/PP1izb\nBFgrfWKCrdkwY2a/23nre23gbKVThG0P2Jqpb28p357Ra5bn5mP7UmTWicSUJW7/1WAtxFoLsjKg\nr9XQimlGns5SLsgsvfV37/2POu47YHt3lajSZPjEbXqHV/BQoRlSuJ3fzXvpk0xIl/FIZRSxiXhc\nJ7Me553rcXYcvMmJxHt8bvQbvMSLXFP3MVKbY0SfxSa1yZ0M0ycuE2gUWU0NUHB7cUllKqIXr1zB\nj8Z+4SqzjPC68DTFfj8NyUGgUkLZ10Rq6mhjIuossAiOgsY+5QYVvwv5x5oYt6FecnJ77zDdzQzh\nSp5p1xgRIcW4Z4rnf/qvabdgsZpAEMHfn2ek9xbXJnWqRS91r5MntHc5VXmb7vUMrajITfsEf1T4\nVcaCN5kIX8UfLuGhzF79Oh+2jlKTnDRtDvJGL/PSMDapjdTUaIs2dtimcatVQnqeEXEWHZFVo5eb\nxh48zgpqH7TG1vHFW/SwRow0vawSJ4WbKo2qi3rVy0HnZWxSpxHmFrvwLtY5fP46U7FhpnzjXOQw\nD+tnGd5YIDqdx7ajhR4En15mQrzJLXk3b/Q9yeeKL9ObX2PSswshBY6bKq24A9Vlw61VOcKHOPQq\nGTGKjEobG4YhUdG9rKwMUjkTxH60iddWIOpcY1ibx5AF/pfoP2ZqYR9hZYNP/fhfYRPbFA0/M+IO\nSvMhatNejLxAV2yd3P0evA9kCAwcXuPo5/OUzrSQa5vt3bC1OcQEVStXbAKY1XfaBHhTaWFqtK00\nhwlqCpsFS2u2a2b2bcvxzOKeKbuzSve2+5VsV4eYxza9rk1w3t4R+dF3aBOct782j2dq1E3fbvvd\n13Vvi6O/cBVjtsTSW/bth/6Rx/cF2IIgSMCHwIphGC8IghAC/goYABaAnzQMo/BR+5biXvTDNlZC\nfRTwI+gGxXwY1ZCJ9aywku6nWA4w1buTZXcfFIDToERauBNVPFQ4wgX0BZkzX36CixvHESMG+WeD\nTAX24paruOJF2ssihctRxKDOtYFDBNjLMDqP8y5P6W/xtY0vMCPtZv1InKfS7xHXUmSeCtDaa8Mm\nton05OiaSSNsCDh7VMQ0NBt2VvQEOW+EHtcao9I0kXoeZ7NFjzdJXE7hs5XJLzip+xwUEz4O+y7w\neGSVFjL71m8Sv5xFfM3AflJn3+Eb/E7kn7Hq6KaG624XYZtcIcIb7z+LNiAwunuan6/9JXPyIN/W\nn2HpvRHqYS/eo2WCch4bbR7lNAottLZEphpl1j2Cy15DE5ZYEo6jIrOT2+QIs0ovAQqc9L3Ji65v\n4JHLnY5FCpzjGK/t+gTvdD/GeHQSF3X26jcYKK8QOFdG/E8G8Uc2MHYaKDGDscoi3UqOhwYv07WY\nxrHe4FT1Pb4pllEesvNjxsv4XyrgOF/hsS9+gD4h8V4kzAoJ9qnXeLL5LjP5XdTxYtvT5uG+03h9\nebJGiK+nf4oWCtVuO3XFQU1zsiAM8VztVfxaiYrHQ7p/lUZIodTwkfMHfihfgB9kbH/80dF6jJxZ\n4cmVJJdKjS2NI9bCnZUCqFm2UdjMuK16bTMbNgFUYRNIraoTa3ZrdfizNuhsNy61bm9OHqYM0ATR\nFpYioOU8ZnONdckxs0hpbWtvW7a1KlrMz2/y+uZk1rY8rE049kKDw//2HVrVCt/iCctdejDi+82w\n/1s6ixN7777+TeANwzB+VxCEf3H39W9+1I7hYJbo3usMu6cp42GZfrxSGVlqIbnbFMthJFmlLdjQ\nvQLh3ixj6i1ivjW8lKnjRKGF3WiSUrspl3x4bGV2SLeJ2DPYbC3WfVGaPgW/R+wAq22GFhlsdNPC\njiGoKFITJ3UCrSI2uU3GE+Hd3ofZ0X2H/vYyogqeWhW1YWfN3oUj3kAtCfROrpPrDzHbM4RT76Jf\nWCEkFbjGPuabI6hlO35fAbu/QUtQSNiXOCVP0q46GEouIVRhta+LgFDEVa0TT6yzIQco4EfH0/EI\nFxMsKf3YbQ2GucMoM4TIsi7GSHoSTMs7eKXxLDvsMxxoXuNI+RJVvwOvWEaUdIaEeSJkuSgkWK8d\nwqnX2Om+TUAo0MBBBTfd9nUi9jRZIUIVN3Wc9LNEyJsHm8RAZpW2Q8IbLVMWPaxno8TPrmHf10Bf\nh9p3wU0Zf7zcIfyyQA56K+u4qhKumkbYkQefgdol4XDViUkpBlmgSACXUEMQddy2Cg5XnTZ2fO48\nfnuequFEk3UabSfZfBfNtoMifq5V9zNoLDEmztAnrDCb2UF7zoaWkiglfjiA/YOM7Y89on7YsxP9\nlo5+YR17czNDhK2Z83alBnDPDMrkd62gu33txe26aBPQTAmdNRu2Zs+m7M7M9K0TiJnFm9dqArjE\nVj7d5MKtmbSV/7aubmOzvDavywzzuZW3NqkSq5zQnCwkQGqo6B+uofUehJN74cOrD5TFyH8WsAVB\nSADPAr8N/Mbdtz8DPHH3+X8C3uZ7DOrdnpscidc5zllusJfXxE+xKzCFitTpXEys4KVMwCiQC3bj\nPVbhpz7/ZfIEEQxYE3pYo4eNSBjxUzrSkkrEluHZkW/ykP8cAjq/zz+lOuymd3iZT/IdjvMBN7iB\nqP0E54RjFMQAewI3OVE7x9M33sKoC3zge4iXeJFfq/4BPZXsvX7YgsfNjb5xwkNZ+pZXeOxrH/Dh\n4YO82fM4V8QD7HNeY5/zGl83PsvV7BGaKQ87Jm5i83UWZPDqFXZWZ/BnqwhrkAmFmXpxhLH5eRpt\nB5c5RJYwVVy0UMgRZs3bg/hwE58tj0cs03YI7BGuEZSzrD7ay/v1E7xR+SR1n5Md5Xl6F1Lc2dGP\nGNSJ21I8z8vESPM+o2QLwzjVBlWnh4PSJVzUuMBRVoVe1o0eivjIEUZC4wXjW+xszRLOl5CuaSzH\nurkeG2fSO8aG4uSx5hreXaC2IPeHEO4Vce8GUdI7FRsZ8IF9WsNzpU77MRCeFWk/62TBl0CS2uzn\nGmW85KUgZ53HUBxVwqRJ1hKU8SLTwia0eSL6LqlSD3+0+o8RMKhLLq7kD1ENuTjqOc/TvI50AVJf\n7YMPQfrUD97Y8IOO7Y87pKEQ9l85TvK3/FxPbRo3meBjZp9mdqyySZfodLY3116s393GzSZlUWIr\nWJuFRlNN0QYqbIKxmUlbPUlMfxHYbC+HzUabBpvqEesCuqZIs8Fm27uZSZvnc9y9hjodHYOdTRdA\nq+rFzNpN8DcnEDNM0Bcs25rrV0p0FCPzu+I4f+kYjd98CeO/JMAG/j3wz+noPcyIG4aRuvs8BcS/\n184HucQnmUNDpGAEWDEStAUbgmDQROE4Z+ljCYfQpCuyQoEgF4UjzFZGaBkKg555CkKApkfh0d3f\npTTkpy44OOM6QYwU+7nKAIs4aBA3UjzWPI1LrHJHHWXxynMsuvrxj2/wE5WX2N+6gREQWO+Lkg97\n6RLXcd2sdT5BAloREbu/xr72dZyXWrgX6sj7dbRhGQmdcW4zwBI92hr/ovz7LNoGWRrsZZdjkpLh\nZUofJ7SYw/jTJvN/C3EP+AfK7E1PMbVvjPRAhCFpjsOti2i6zHVlDytCgoBY4KjjAkPiPIPCAhkp\ngiAY2GgzzBwD9kXGxGlUWSbsTzO3I8EV934UmvwrfpsoaVrYGWSBL4b+HR69iiy2+ICHSRMjRJ4j\njcv41Qpfdn2BDTFIQlslXC2REaJcCh3g8MQVZGcLL+XOQgUH7fj+FQh7QFYg9Eew6u9D1CRG1xYQ\n+/W7o7szMoQhsBkwbRvipn2cO+IIDRyoSGSJMMgio9osr+afp46L3qEFIq4MUdLoCJTwYbgMPpl4\nmT1MIgkq18UJYvYUYbJMM0ZWiHYGVRV2x65z/f/FgP9hju2PO/YFr/DLR17jQ99tYOsCtSbdYXXn\ns7aWm9tbjZWsvhwm0FsnAOuKL9bVYaydjFaJnJm5mtl2m61cOmw67pnHMLlw2fIay3nNazIliea+\n5kRk7bY0OXSTYjGPaeXQrQVI6AC+qaAxP5sT+ET0HU4e/FV+21VkkRgPSvy9gC0IwvNA2jCMy4Ig\nPPlR2xiGYQiC8D0dU175vVkufM2B0DJw7SoSP7DCit6HKsh4pRIprlFotkhWulkyPqBmd3HWm6PU\n2qDZcrCkt5GcKyhiE2+zgmjTkO1tdKqcY5lpNAq8SokYeV3iFbWIIQpc/KBNc/UdWjYnjUslPmxO\nk2xqNJpdVPxOSkqGCi/z2lyWixUvzAqUAm50h0BEy6EstxGLBlq/xJ3VDWaVW2hIbJBhWc/jbiTR\njCkUbBSMDco2D6rtJteuVfgzQ0G/qOJ3gXK7BRdyzD6xSnlngbC+QaBdQtAhJyUpy1Eqso8aGjbW\nqLPBMn24kfBTZpEPCDXzVJp3uOLajyypjBhVpoU0NaFMgAIaMja1RPXdVZLt22g2iQIBLhpRVnHT\nLeSpVtfpaqeZ9FzDLrbw6wv8TbuKKkoU5TRnNT+yqKLLaQp8SC5fppED7RtQ9ygUwn5Smg+pqjGy\n4kCoGki6jjLf5ExSoHleAtkgq1dYZ5mUq0VZctPGjp1byNoyTTVLs/nXqK1+SrrGnH+BgpLDSZ3m\n3fVHZE4zT51GxcnSWplaLMOqv0naiLPynT/Gdut3aOt2Vl/J/kAD/wcf22fpzFYA0buP+xkC6nSK\n2u9eJrlY4yxb/TS225CaGaXJGVtpDGtBzkp9bG9Rh60AfYWtk4Q1a9U/4rmVE7dOEtq2v1vpFWs7\nu/m3K5Zr2l50tEr7zEnGOnGY22A5j6nJNt+zUj7mtUUuzRH73TX0ZB+bxrT3MzJ3H39//Ocy7BPA\nZwRBeJbO5O0TBOHLQEoQhC7DMJKCIHQD39Oc+Gd/IcbYLx7gsYtn8YWmWNpZ5Jdrf0BKjnPcfZZj\nrHFreYI/v/TPoQGengLGI0sMijkaG25uTh5iePg2Tk+VW7P7Ge+6wRNdr/ILwp9yyTjEOT7NKWGK\ns/ox3jdOUBHH8QgV/PIUj/+MgEIBA5FhhtHYwSIDdFFkH2n6WaJOlAZ9tJG5yQQg8ijfJKpnkNAo\ni15iJPAyzjrdDLLAbpzUcDGUW+bA+k0MTaAUkljv2+BPxTjHBp0cs1+GFSBPp3lo7zLaCwJy20Bq\nGkhNQJ1jOmhw1R/lEgfZxRRjTHOBg4TYYIBF4nQzvNJi37yddyZ+hS7fOr+k/ve8Y/NwVjzOJQ4x\nyAKH82c5sniNvmePMxUdJYbAtP4cVeMwKanMWLLNU5W3udM3wXHhAz6tXeGc8hAxLc1Ae4mvKF9A\nkHQOcYk+lgjPFfCcBZZhui/Bqz/5FH4hQIgNjmCgI+IuN9ixuEjttMSpX/EiYuCfLSHmStzeo3Ld\nvYcMEZ7mDYYqy7SrTvSgg5fvHOfa+UOIpy4Q67tFP0uoyMioeCnzqvFprl48SOntMI+eeBvPqQzL\nzRPEfyrFQLLBza8cZPDodTZOPvx9fRXuz9g+Duz9Qc7/Dww73fO3ef4PzrOKwQiblIOpOzYzXg+b\nGmY/m9ro1r0jbQKiCQDy3f1M7rjFViA1gf4pNikQqybb6lVSp1OENGWA5vnM41l12NZjWDsRTVA1\npYjPswnwJmCbk8aG5bPBJuibGTls8unQKUJarWHNiaDOZoF2cNJgdFLjj4mzzKFtZ/g44t985Lt/\nL2AbhvEvgX8JIAjCE8A/Mwzj5wVB+F3gi8D/dPffl77XMaY8O7hp+zG+0ffjnFK+w3PGt/ivnX/I\nafFRrrOXbtZphW0kDs9R113YnQ3cQhUdkWZVwbgD61oC50CVUCJF7kaEV958kVt9+8nPBMmlwpw/\n9Ri57jB5V4Drgf3stE0RVbM8eX0OwWkwN9pPijgVPFTwkCFKjvA9gADIESbBCvF6hu5UjiV/P1cD\nE1ziEEPMc1T9EHepSbBewK1VyMSCeF0l8l0evil+howjTIA8K6yT2pDRroB4EoQRQIDpPWOcN47w\nbuUUP9v6S57W3gARVkiwSD/jTDHIAj5KjDHNKr2c5yEGWcAVqrCmRPC5i8yJQ/wb27/mgHCZLpKI\n6Iwwyw75DnOKTkn2cbO1l8vFIyycH8ZRafP4s6cZujlPbDrDl578Mhd7DvD7nt/goHAZ9awRAAAg\nAElEQVQRQTLIiSEUsQEYFPFxk2dwxFoMPbLIQG0Ru6vGPuE6OUKkifESn6WXVXqda5T6/DRTc9je\nhMnj4yjxFiGlQPdMhoVoncneGBc4ii7Y6RVTJOki3rvGLz5xASGsESZLL6u82niGKm72Oq6T/7/C\n1KZ8GI8JTLX3YL/UpOwMc7T7Ik/43+HXH/uP0KPxxX/4t+CHOrY/vhBg6DBFwc+Vha9R07d+cbc3\nprQ296LOZrZs7fqzZpZWtYiV/rCCmXk8k382OWbYWmC06qpNFYhpi2qlPazNNdvVJWY3pmz5LCaH\nbi1Qbm+i0S3bWhcJNq/XfG4WKs1s3bwPVlvWZWBNkqlER8BzGO58wIMQ/1Adtnl//h3wVUEQ/ivu\nSp++1w5tRSYvhDkvPExR9eGrlwm7c8TlFKd5lAoeBJdGl2sVFRkBA4UmpayfYjKI0RQpp/1obpHe\n7nlyyS5Wzw8wVd7TMbRdASYMekMr7HZNYqfDw/pJ4dfaaLqIj9K9pa0cNKjSMb/PEaaEjzpOknRx\nWLvEzuI0vptVNsbC3A7uZJYRQuRwUmPQWCaQLiFmDeoeO+2AzLotypS0gzvqDoSKwGL9fWYDwPBr\nqA+L1A84Kcp+prt2cEk6xBvSJ3isdJp6y8F6d5w1WzcFAthpUSAABsy3hzq6Y9nXcSZ0VVEdEodz\nl1moDVEznMTCWUQXlKWOuEGzieTdfkTFjWGIiIaBU60TUTMcN86i2kSm7aOMGndYKfcwUxvFCIuk\n7VHa9BIiRxOFZfq5wyiaRyTpiVPEg5sqG4Q63DZQviuoaMgKl/37qNZTOGfL2Po1aIKwYRDUSkT8\nOYJGHrumUhT8NBQXG2IQh7/GiP82IgYOGig0KRp+UsQJkaPa8IDDwPZQk9xiBP0DERo6nqeqJA4s\nMz4+S0v5obem/4PH9scWAniPepFlL2srAs3WVjWEGaYLn3XFc5PLtRoyWbNdM+OFrVTKdl20VYli\n1VCb21jB3QRrqxrFPIYogEkyWUHS8lHvqVfMYqKVJ7fy52ambr1Oq4LEvAfWhzWLNwHfCt7mowTU\nJAFphwNfwk1plvvPinwf8X0DtmEY7wDv3H2+AXzi+9lv2JiD9iVuLh/iVfEznFcf4Sftf05bFnFR\nxUkdA4EQG4TJoSGxTje5m12kV7owEiIUQUzqOHZ3rFipAWZ7ud0Av8bD0ff4fOCrTAk7GWCRpLzG\n5N4THa6cEnUc6IiE2MBAQMCggodpdpCkCw2Zw+0rdKXTSGcNmi4FaYfGcT7ASYMpeRwhpDN0zSBw\nqUJ5p498yEdDdNBFktu1PXw79SJ6RmXXIZD+x/+DWp+dpUAXVzjAitAptg7G7uC/lSeXC/HqzlPU\nnE5EDL7Ji+zkNn36Mn9S+RItu50JT6c11k0Vpd3i565+BduKBpqAcELlW4OfZsE5wBTjOB11ZgMt\nXE47+4XLPBl9k/eee4y64eKQfJG3HnmSqeO7+Efyf+Tx6+/yyOJZzj16iCuhg2SJ8NP8BSnivM8j\neCnRQOFDDpMmiorMHCPs5DbDzPEU32WQBfIEeZNTBJTz+OU1HrlxAc6AsG4g/ppOX3CZx40m47VZ\nbss7eNV7irrgRENglhGOcxYnjQ5n76hiF1rMM0TrF0VcWgFR0alNBWi+7YC3W1RdCrNHhrnun6BP\nWAYu/gOH+w93bH9sIRj0fmaRhDKP8U0dvfV3l9My28/NDNgEWCtXbQ2z2Gc6ZpjZq0l1WP2yzUYY\n2KpGsZ7Hyk+bGbBZ7LvnYSKAXQRBB8PYLEpaFygws3XzV4AJ/A62asCtK86YChKdjnpEoEPFNCzb\nmL9CrL8ubJbPboK3dfLy2jXih5M4Ds1x4ys8EHHfOx3LeHnKfp7LOw6zgylGXTOM2aYIkeNJ3iZG\nBrmpc7J8Grwai0of7/AEy/4R3EKVnsFFGm0HjbaT9cV+qv1u+IwKTglpoo1dquMbKzLgnqNLWOdl\nnqOFHYELvCs9zio9+CgTJY2LGlk9wsXvPoSitzj1idewi208VFFosmhLcDrxMF0/lkTrgS6SyKg4\nqeOiRlnwcW7nUTZCYUohNw4aeKhQwUOXc5UX419lNXSGoYEor0tP4nDVKYkeskSYWJniSPsKh/s/\nZNw2RbBW5IkP3kdXRNpOG8dil5gLDzDjGWHIPUeSbrKtKJ56A9EmkhS7cKtLOLQaCGDkocuf4RHn\nGSQ06jgJC1keql5EKag4Nhr0O5OUfR6MiIhLqhOXkrSRWe7roRgIkHFHCFCgh1UcNBitzvOF0tdJ\nhiIsKX0YiPgo01NM8umlN5nv66cWcJIjTA0XVdz4KWKvtxDmDKSqRmXISfVZJ8aowJIrwYLQj+aw\nkRXD+LQSP5f+Syp2NyuRLkCgjQ0ndQ4LF4mTYoFB7I4lYqQ4IbzPtWMHuSweYtoxTnigSJA8U8I4\n15t7gT++38P3gQgBOCV/h8O2KZqo9zoOTS8M609/a4HPSh2YQLS92GiqMUyJmwmK1kYaqxrExaZN\nqnkMjc3VbKwUQ4WtiwdoQPPuSazNPqYG3MxuTdC3asrNCcZUgMDWFnnd8tz87FZ+3UqHbG/OMbcx\nf4ls6rRVJsRrKLKfmww+CAn2/QfsdaEbVRaIdKWw0WaXcYOx1gw9xho+W5E8QURdoF9dI2MEabbs\nPFw+j+iVWAgOYPSq1CUn+UKElZvDSPEmod0ZgmqJpiKDU2dUuYNbrJKkixZ21mq9VIq7uJN9mCW5\nH6e9zuHGRYJyjprHxXxpmLiRwmeUGC3O0daXsQcapKQ4mVCEg6HLuBoNRqrzFJw+AsUigWqRWsxJ\nqifKfPcQkWYOT3qDUL5ALZckGkzhG6vwtjtJIjTCIgmC5KnjJE+QUOsSO9oz9BtzRJUCDnuD/toS\n9ZaTlm4n3kojVjTKuhfJoxLX0tgaOj61jLCuo68K95a4NqoCRcOHgM4ENxE1nUR9lUIuz47VFI5s\nG2ahazBNxhXiqrEbOy26SJKkCzVkoxjyUcFDr7bOsDZPSu5C1gyc7RYuvYaDOjIqIjpRLcOj9TPU\nNAfz9KMic4MJGoaDfmGJorNNKehGR+T2vhHWn4yTYJkSHqq4WbV3oSITVTMcaV8kJwap4iBHGBUZ\nFZk4KbyUcFLHLjaJk2Kc22RGo9yRRxHXBdyxGh4qNHAw2dxzv4fuAxMCBvuS1zmkTHJR1+4B0vbC\nn5WLtXLMsJUWgK28tVlQFLdtt72N3MxKYevSYdaOQyvQW7loAdCMzYKlOelY/UDM/c1iqGnmZM18\ntzf8mPuZ/5qALWx7WP1JrFy99Zzmtd4DdF1jIL9MdP0GMMiDEPcdsKcZ4y84Sg0XCk1m9DGeKpwm\naCtzJzTEVfZTcXjw2stMieMMZpb4R9f/hGd3vsK73Sf436RfBwRc1BFEg6A7z87wTR41zjArDLMq\n9PKk8DYbhPgrfoqjXGAytZdvz76IevEgWlCiGDZ4fbkbl7+M92AO+6fbDDDLsDTH8MwyvmaZ2kMy\n/7Ptn3CZg4TI8/jG+3RV0pwfOEDPZIrh6UXWno/SjNpxqzUeyZwndjWLcEan+qaE8SgIvyVy1ejF\nTxE/RRw0SNLV6WbsjxMijV8uojia1HsVFid6WHT0kxGiiJLO7pUZfn7tK7w6/hS9+jpHa5epBWxI\nLzUZ+f1pXL+lQg/ol0RuRUeZi/fhpczjrdPsWJ7jm9cbKF10KKMrUOzzsNjVyw1pAi9lPFQ5x3FE\ndLyUkWkTaWzQV0vx1/7PcsO7B90tcFC8jIrMMn0YCGQCYVYOxGnLnXpAF0ne1E9RxM/TwutcGFGZ\n+1wfLd3GV5Uf5zr7+FX+TyJkUWhSxY2TOk65TjbhJ48fMJhkNxmiiOgc4Aoj3GE/V/FRYpl+/oKf\n4TY7WRYGaNtsaJKIgE6QDZzqx121/xGGAb736vjkGoJqmG9tyURhqzTNLPJJbNIlVv2zlVIxaQdr\npgp/lxKxSuhMMDUzZVOzbbUwtWqeTaC0GkJJdJoITV21+RmszTum0sMEbOskZNIn1n3MTHr7Wo5W\nMLaaXZnXjOWemcVQVANlso0r33og+Gv4GADbT5HwXZueIHn6xCWyniBZKcAsg9xggngrwzOVN4l4\nN5A9bZKjEYLFAkebl/m5wT+jLrkQJQG3q8U1+26WxB4W6aeHNQ5zkRFmkQoG5CT6WsuUWyFawT72\nDF/nkHSFA/p15hL9rHnjZAhhc6pE6Mj2HJ4GqiJzS9iFhzJHWx9yrHiJuuRk2jXC6NQiUSmNbbxB\nbDWHM9UmbwswFxjk1q6d2N0tJiI3aA9IzNhHWRB8ZFufYqMe4tOuv8Vlq6Ej4l+vEFvL48g1sIVV\nqn126h4HXeczDNxZQxg3iN3K4r1T4dHjZ0mPRTnXcwTZ1iT6UIrEb6ygD9dBVRG6dXrtK6iGgIGI\nw1ZH8qgIPgOhi3s6p5LhZV2Ks0ovD7U+ZEy/Q8nupyZ2+spSxLljH8EQYEXqRRVEeqR1/BSRUbHR\nZsK4QY+wRtXuIk0MHZFBFjglfIcNwne/vG3cthqr9lEQOvWBb/McbqpIaDRRMAAPFU5IH2CjjUIT\nmTbFtSDLU4N0TaRwxTq/ktbVbnQkDshXiJJhObRE8okeZjdGyZ6J4ju4wZBrllv3e/A+KGFA/aJB\nQzQQ7yKXSUuYwKewCUAmKJkeIMbdbc1uPtP0yar+MAHMpDBMEDTB0pwYrFposzPQ3B82Ac8Ev+0T\ni5VysfLiqmUf0XJM87lJt1i7LM3Pu13xYblt9+6NyV9bJx/z3lmbeKymV6IKxTkoJB8QtOZjAOwo\nWRKsoND5mTsszFF328kQYZZR7uij+NQKO1szOPUKGVeY2YEBvJNx1A0bMU+Wut+JS66zMzBLxaGQ\nIkwLO15KDLJAF0lirQ1C5RLecoVLvnnCIQejA1M83H6P5wuvciM8zqRjnCnGKeHDTpsmdophHwUt\nyGnxUTyU2W1MEWnmuObbQ04KMjHzMspgndxIkMxcF2rVTsOpcKNnN/m4H+dgHddIHeywIA9QE1qo\nRoCVVh8rjgQx0ig0CWRLhCZLMAX5T/nYiPmwCSr+TIXQfBFHtIFtSUW8ZbArMcNyfx9vuE8ywiyt\nvTL2XW1cM2soeRXRbdBTTKG5RDKxKFJbo6koVOJ2lgaC6G4R13CNFV8vWSOK3ygS1jaI6hmGmSVD\nhLLhI9CyUxFdTLtGaCPRzToTXEdCw6dXGNPvsKd5E7vQZNXVg7PYQDJ0XP4qJ+pnyetB0u7OsVJ6\niBRdd/+fk5QNL+t0UxE8tLBTb7iwNdtE3Dl65DU0ZAxEqjUPKyv9VEa8VPCSJ8BV4wBhI8cp3qSf\nJQa9Cyzt6+ftNz7JlfnDHB17n2HP7P0eug9IdGAluyBibRUyM2ETrKx6aRMczW5AE6BM8FK27Ws9\nhgmI1qYYq1+JlVIxM1or+G8HbBP0rf7aVoWHCcjmOT6KZjHPa1IlJl1ibcAxgdvc1gq8djZb1K0G\nUuK211YfFBEQdShlQLt3FGuJ9EcT9x2wg2wQJE8vqwTJEyaLlwpZIswaI6y2e+mSUixEe6hKTmo4\nWaOb14c/xfXkAUoXwvgncgQGsvh7igiSQZQMT/I2cwzxHT7B5/g67bCNeXc/h7PXGXHMsM/bRLLF\nuS2P4VcKtCUZFzWGmeNDjpAlQgk/N0I+5o1h3hJP8hn+hoB9gze7HmNV7MWTqqJlJHJdYS74DvB/\n7/kiGSOKVyixy36LIBuoosxrPU8RIcsQ8+xhhWftSzhDdd4UT3GHUbpI4pTqndGQhkl1nLQtxMOt\ns2SfiLD6aBfDjjmCahmn0cY4Cqn+GDeYuEetNFpOIh+U8KZqEAMpBfIwEAPnepu66mImGqXUfZJG\n3MHOoWnmnYNgwE83v0JDUlhSehgU57HTYkNt8nzudVYd3ZwLHWKARRKssotbvMVJbOoaj1c/QEm3\nqCsK3sEyz954nUbbwfyjg4ysLOFsZLi1axcXZD9LjpN3lRuwy5jiE+obXBIP84r0LBuEKKaDFJYj\nnNnzGMOBGTxUOr7fXR6kJ+t4I0XiJAmTxSE3Ue6W14LkcdNxbbzmP8yN6n5OVx7lROns/R66D0go\nGPiYx06Ercb/pgrDmjmaqglre7q07T2zGcU0c7Jy2NaGGsmyvdmIYuq6nWwaKdXZyhFvB3zYWtw0\noa/BJgCbyg/Y+sugQefXgXmdZiOOGSadI929DlP5YfU8sYKw9TqsUkBzwnKyqRHX6ZiHVrADQTrr\nPDb4Ucb9z7D1DHu168yLQ8wLQ0zeXaD2dnOcK/VDlB1unPUG0WyekFAi4ijSHchxWTmMEq4THM2g\n+w1Kgo+6zclT2nd5svYOO4pz9HrWyLrDDNeXsa2oNDN29CEDydfCK5ZxCA3agkxJ9CKh4aZKhCx2\nWjRRyBDFLrXwUeR5XuZo6RIDlWX8zTrLoQGueA/w/rFZVqPdnGk+zOXpIxQFP8FgnuHYHN2OJIPG\nIkJZQJAMBF+nSGcT2nilMlkipIkxxDwXuw+QG4hw4uI5mpLCutTNu8ZjiIqOt1zBdlFHtOsUn3Jx\no38CzS3wDK8yygyxjRye1Tpro11c3bGXFW+CCf0GRgCK+FGbMk3dwbrcTd42Th0HbcXGSG0BZaPN\nn7e/SNibZsQ+Q5wUQ/VFEvUkirOO7uj8P1XxkCNMnmBn5XppjZZD4nT4CXJSCC8FxISArou0RAlD\nWUESNJqCQg4vYjvGZyvfIjSbx7lSZ0xZ4JzjMaY8e6nFXJTqAVSbDU24CwMGZFsRBo1FftnzxyBr\n91arXzQGcBgNQtIGUTIIGBQIcLT/LCF3jjfKTzPtHrvfQ/cBCT+wiyp+KnT4aBOIzAzapAvg7wKm\n1anO5JbNzFdiK8dsVYRYC5nW82x399tOnZgUg3n+jypetiz7mdehsJUyMcPKd1s7Iq2Oe+Z5rK36\nDss+Jkdt9TzZvlKNtXBpemab3iQqfmA3HSuC/68Ddi7H7mSanD/CDcdersp78VNiQwvTbtiIOdPE\n1DRS1sAh1gk5ijhaSxyJXcLwgjSuskqCJF2U8TKuT/Fk6x30sh23rULLKdHV2sCRbqIuSayPRSk4\nO14+OgJlzceS2k+fbRmvWEZCo58l8gSZZ4heVulniaNcINgs4ynXCVVv87brcZLxOO8eOsEyfdwo\n7iW/FqKme5HaAkZQIuZIc6B9hcB0jbQrws29Y+iIlO464i3RT44wBQJk/DGMXoljgx/icVRRmm0W\nxQFcRg2hCYX5ELa4SqtXZrHaR9jIccxzFkOBYKVEMFPl9f1Pcj58mDuMksWPlwobhFi0D6DpHf+Q\nbkNHQmdeGGJvawp3o84b2jMc1C4wos1gr7YJNspohsxsqJ9VWzcl/KyQoIgfhSbjTOGUasw4h7jq\n3EMZLyPMkhroLNPVwxqqS0ayG1QFN5WmA3fBQ19zlZ3zMyg3mhQiAZKeHlL+bhRbE8mtIUfaYDc6\nX1JNp3QnQLeR4amet3mLx1hgkAxRpvUxnNTpYQ0RHcEwuK3vZF/sGgnvCpfmjlAQf2j2qg94+IAx\nVLz3QMYEXatsDzbBzwqWH1VotAK2tUPR6smxfQKwArZ5XJNKsNIu5nmszTVYjmU9jwn8JuFg7tu2\nPDc/o9XzRKeTRZvHsBZZTaC1Lv9lZudWbtx6L8x7ZU4C2rZji/iAnXS69ExfsB9N3H9K5O0SQSc8\ndeQ0KwMDvBb+JA9xnm5HkpbNjkNu4Ag2eX3fSbpZpy+zysjkEo8p7zHhuYKTOh/wMO/xOGd4hILs\nJ+WNsursoyY5sUtNbD6VwN4i7VEb1wIT3GIXRfIU6GW9lqC54eafRn+Hhkvh2zyHjTZtbJTwkWAF\nN1XSxJgNjiJ4oUdfIWFf5BjnuMEENlrs8Vyn+aidVC6BURPQRAnR0FGqDcSXdKrdbpJ743i4Q5sE\n3+CzzDBKgSBF/Pw3mf/As8brKC80mRCmGFleQHNIXArs5WZoJ7MvjPDIpXMc+9qHfLr4JuKYhv6Q\nyMX+vTR9bnyDc6SdUVzUOMlbvM4nyRAjQpbZxGhH9XHhDC9q30RF5k/kL/GG9yQJ9yqfM/6SEekO\ng9UFopcLlOIe5kf7uSgdYpLdzLCDZb0Pn1CiKSjMM4SbKi5qPK6/ywCLSKLGDSZIEaeNDd0Qaesy\nq/RSTqu0Jgf51sFnMPbBQPcyrwx9gozTz1HpDAPKEmkxyh1GSdlieCjjqDdQ/8DB2+6nuP1PdiAZ\nKgEKJFjBKdUQMWjgQKFJRfPwbvVxig4//c4lEqPzPH3ndb59vwfvAxF2IIyEfQsQm2Bp6odhq7IC\ntmbNLTbB1qCT0ZrZtUlBwGb2CZtgafXmsPLZNsvfrBmwlWIw3fbqbPXCNoHTlOi5LH8zwbtNB5it\nckFr9m+GVScuWv5u0h9m96f53KRgamwCvZVyMfc174P5f7D51x9d3HfANqJQHVLwLlYYkhbYF75O\nmA0QoSx6aKKgyhVscosybha1BKnBOHm3H4Ua3axztHEJSRdZc/YiCTo5KURGult4NMoIhs60e5SL\nyhFObzyO4mgS4mV2cJbL4iHekZ/ib2vPYc+3mczvZqBvDpe/ShkvgUYJh9HmrOMYo+o8I415AloB\nb7tOghTj5VmUVhNR0tjVNUUy1k2l5qdidzPHMLsct4ge38CnF5mYuk2hXsVLmRhpjnOOIn5K+OjW\nU3iVMhsxH7TB1mgRbNSIqlm65ABKqMnGsJ8zxv9D3psGSXZeZ3rP3TLz5r5n1pq1di3dXb1g626g\nQewQSYgEhzstiSNp5LFlS1Z4rLDl8Q9P2PPDEyFb49BoZFsaWZTEkbhpGZIgCLIBEDsavaG6q6q7\n9r0yKyv3Pe/iH1kXdbsIW/RgGuiwT0RGVeW997tfZn35fiff855zzpCqrRAN5HGIbTxCDcduE3lG\nY9Czguru1Flx0STGLie5StXpwU0NjU2qYhcLeyPMz07QHnLg7S2RpNb54JYkpFdNvKN1EuEsE6E5\n9pQwc4xjCJ1vBitaitbiBCFHjrGBWYJ7ZWJCjmw0xPDmChGjwFZPgh1PnLruxi1UOS3e4GOVXSZ+\neJ1Y1x6VlJeL8fu4Pj1F/maE+gNeymkf5fkAoSfz7MUj7LS6yPVFOz0bPRIj0jzHK9c5vXON7yRM\nrsvHuLT7AFulFI09J9tb/URO5VHG24iqjhqr3umle5dYJ4woId6maIADgDqcLg4HMjs7GFseY33/\n78NJKfbaHhbva/dGBW73vC07rO+2xhUARdgHSPN2BYs1lh2ALc7ckgbKdIDcUrdYIGqBswXk9ufe\nbz72hCB7+zTR9rt9k7Pmb113oHw/zMx/+HbHATs7GWH2/i56frBLqJTjDG9SNzu1O3aEJCYCXWwR\nokAZHxtKL6vBAQSHSS/rnZ6E7Tq92hYJZ5qiGWBWm2S3HcfrqOBXSjjbLW5KY3xD/DxrxRFOaZeI\nmxmeqr6AW69xzTfFS9XHaGx7MG5KuFs1EqktpLCOs6XRMDxcc52gp7lLsFLG1W7jcTbpMnc5t/U2\nRlOk6PLSE1kn7w2Qc4V5OfcIZdNPwRnC/fEaodUCyUt7XM3KhAt5TgWv4qBFBS/r9OFwNVmVe9nw\nJhBFg0CjzGBmg0CzxHjhJl3CNm/33MdPhs5wDgO9LOGr1PDIVZRim9qimyOTtwgEC6zqKSbFWbxG\nhbOtN9jydCEqBg5jjU3hHl6vPcjO9R6OeG8S7spjiiJ6U0HPKzS2Hbj9DXoLW4R9GcqKh2UG0QUJ\n3ZRQ2w3WNpJ43HVCqTxqqQmmSN3roSedJmwWKXV7yLn9VPAREIqc9lzmP1W/R+NVF66zddanetmR\nEizPDLHzg14cvU2MtyWkb+uk+lfJuuLMNCfxnm+Q9G7T7dripHiVh+pvcHbrIsu+FGvOFO/u3sPV\ntXvRFhWYgVrIS2Xci4CJHvjoPzwfjnVIAgnjNkXG4aQY8dDvFhBZwUELKA972xbHawGbFcCzvGSL\n/rDTEdiuh9thzK6hZv/estCplW6Ndfi4db1dH23RIBZYK9yumbY2q8PJOtb1h5sEm7brrKCiPUvT\nSlm3bzYH8zFsV320dscB+4Xg47zh/QRTj1+nz7FO0CzwvP40bUHhiHSLNAlWGKRICA8Vdm718OrX\nHuGpL3+P1L0r3GKMV93nuWTewzZJ3sqdQ9wRaW8rfHroW0wNX0NCp0SAmuLmc/3/ll5pg5m2QP+V\nbc6632H1xPe46HqA5dIwpWaEW9+cpJ1ycOYfvcK0ZwLdlGkKLr7m+grfVD7DUfEGfrFMX2uDZyrP\nU3G7mQmN8qb6ACIGvcVNfu3P/4Tuxg6BsSK1czLNmhP3ahXn2xrRoTy9n98ABGLsMsgy7wZP8C3z\nWdaFXvyUGHYs8nDiFQam1xlbXMbhahGZKBI8UqSGm3fdR6k4fSSVbfRxiRtJN/fqVxlfXmSwvMED\n7stIFQPfahn3mTpGj8COlkcxCsSSuxz9B1d4Rvo+T1ZfoOUW8S7UUTZ00v9xFCGm4ww2EZwGwyzx\nJf6KGSaJt/c41prh7ZP3IjnaTIo3CPbsopSajCytUulS2fUFqYoeRrQF2obCgmOEgi/AtXsDzI5M\nMOW8TlJI8yCvkZnsIifFSQ0vUnnbz85qL9NvnUYXRaRugU8O/h0tp8yFyqN0u7eIBrM4TjYZUhd5\nWvgB4pjBnHqMjNYFmxBxZEmx2mnKcLN4p5fuXWINYBeR5nv8r6XMsIor2ZUSlpdpgZyHA5CyA65d\nHgcH9Tfg9qxCexp4ff9hb3QgcNAAAG6XyQGYZifD0QJba+OwxrQ3S7CnQr1fdqNou8aaszXvw/I9\ne5Er+OnMTpkOUNuTeSxu/DDFYv0PPuqAI3wIgH1j9zju/CmGA0u0FZmG7mJ9dwDNIRGPpDvJKzRw\nUyVNnO1AEnGqzWooRU1TMeoS284kWUeYpumg0IhTb3lxR8pcMe5B3W2Q872CLP0DfTUAACAASURB\nVLV5ov4jHnvrZfzhImmxSiYSoeZyMirOc61yGq3uAAmkoTakDKqim4wY2+ezfbiUBn65SEtSaCJT\nF52koxFuuka57pmkW98iY8S54ZhkZHQZd7qKu1YnayTRHG2CwRrVuIqelElVNzFnBDJijOunJmgr\nMiFyNHCyS5RVsZ+604VS0/DmazAEhlOijYKPCnVJpSp58FAh642y5u7lxN40nnYNr6MGSv49wrK7\nkMFwg6vd4lj6Bh6pQSYeYbw9g6dYJXariqYp1PtcOIYaFFU/WSGCgxYZYmSaCU7MX0d0mKz0pTC9\nJj6phJ8SDZeTeq1NvFbECAuE5QLDrWXiwi5VyU1cyFCUDUqBALWAi5rmQi61ePDSm5SFIPoJib29\nCA2PG+MxkVJXAARwV2r44iVcnhpHWrfwiyWKUoB3lNPslHrImWG6/Js0ulTCwh5Bd4FH/S8xuXOD\nm9ERCoHAnV66d4mVgVsYlG9LDLEAzZ5wYvciLarEThsotufthZ4sr/U2KoPbddGW2YHPkv7ZvXts\n97MnqNildVZw0AQcwv7z5gE9Y70m+wZlr6Ft3ct63S7bnOzvgTUXC7hNDnhr+zcVi7u2aCRr3gdz\n7vwP7obmjnccsDcX+knsRAi6i6DAmtFPK++mpUpkI1HiZIiSJcIeiwxR6VPp/eIKq0ofl8qnKSyE\nGInME4lkMb0CdaGB4IGeoVXmtse5uT5BY8LBOfFVzpXfJP5SDnFEJywKrA8cpSJ66TK3cRebSA0T\nJdCi974VIj0ZdkhCSwTTpO5QOSbeYJR5WjhQqeOTS2QjQWYZY8UY4DONv+Ed+R4ue09x45kxvEtl\nXLdWKCl+3K4GRjxL9aib5ikHQ7l1jHcEso44V6dOMibe5CRXGWWel/kYFbw0cKGbUme1DIAeERFM\nk7i+S0N00hYVBMxOvQ1BRvOIaLKA5ANBMkEEIQHhchHWQS7CxOYCg84V9JBB2plgXe+m//o2lSmV\n8lEVp9mkjsouMWQ05hlls9nLQ5cuspro52+OPEOEPca4SUcN7UQTXYgOGW+7Qm9lh25hp1NeVpYZ\nNefZblRx5Nz0yNu4pRpSVefolVmMIyLisMZfvvkLNBIq0q90sjRNXcQoiWSbMY6oc3xCeQ5ZaFPQ\ngkw3jnMxfw5EgYd9P6LLt0lS3WIgtcKp1WsMbS6jBUWmB4/d6aV7l1gJuIlE6T2gOxy0gwNNts7t\n/QntbbXshZjsUj57MwHruBX4s8sELZC3gNTqvm5PG7enx2u2ceH2Akvv6Z6Ffa/cvL2lmDUPe70P\nOyDbNx73/rEat3+DsOZg1Qo39s+xxraA3FLK2NUr9uskysDc/v/io7U7DthsGrQkB/OMssgQ63If\nvaklPGKVEDkEDDbpZpYJ0iTIFuMUFmMEB7N4bxYo/ncym4PdFB+O4PtcDl8sTyBc4kHlVa5U72c9\nnyKpbTPQWifiKPLmL95Hxhtl9vlFHr26TMBToHrcSS3+Z3QH1nhl+DyP+X+MlxJvcJYrt+5Daukc\nmbrBojzMBr2MsIBKHQORCWZ5kNc42bxGYmmPh4JvEOnb4yZj3OiaQAgYVP0q7vUG4k2TkF6kK1OB\nVaidcxKNbvNL4te4YD7G68I5RlhAoU0JP9/k8zjcJv3uLajAWP0WEWeGnmyat9X7eCH4JGtGP+PC\nLJ8QnkN1VqkpDjBE3JUWilOHfmANuAG8BG/cex+FcS/n+QlZI8pCeJQrT58k5t1FEyRe4ElGhXlO\ncYU0CY6Yt3jcvECXc5ua4uoEMfHgpUKEPXaJccV7gitDp/lK+ZucLFxDaoLeLeN0NDiq3WBpusHJ\ntV20ARlnvIkZgYXHBvFT4tnMd1GmNC44HuWychqXo0Gt6KXQivFy+glC+TK/7fgX/CR+luncFK+8\n9QTGlIm3v8SyMMjWZh/F7TBXKg/wsvgU4eAeIdK43gud/X/dmgjkOEKLSWCBA8/ZUjZY9MfhQKBd\nSWIPSFpUinW9ncu2gN7OX9tpA7t22p5paOeSreSWmu18K9hnT5E32A9GmgfJOg7buJaHb/WrtL4N\nmHS8aguQy9yuHLHmbm0Ads9csV1nvXfCoXOseytAGHDTpNM6SuOjtjsO2F2pDdyhXWqyGw0JXZA4\n73mFHjYRMHmF82zRQxMne6UYuekApe+AcMKDJBmI4wL1qIc2XvSbAt2pDQajS8TJMBW4Srid42Zx\nkpau0qtuUBlWcQtV/JQI+gp41AoIGgOuJdouiRhp/PvZg0/xAoueI1QdHuLCNrcYpUCQKFkSpImT\nYY1+QuQZEpZxS02aopNwO8/o1hJuVxU52iKabYApcmtsCPONDYRNk0w0jJJoQUDcrwEtIaHjpMnp\n/FWC+TLfKz/DVvN18AGzUJACbIR68TlqGLKAjzKqUKdAkMucZk3qJybtEjcyDG1t4NA19lJBPHoV\nda0Byy385SJtVSBHmC26WXQOUeryo5htNFNmVUgxxBIh8rRRSLbSDLTW2RjuYTXQh45EkAJ7rSjf\nqH2ZIc8CLrHBoLKK91YFYR7Ig+O4hjRq4Ai18DYNQlYkqwAFI8DGeDemKeErVjnDW/icJRKBLTIk\nyBKnZOTw6lW6m1ukyuso4ftpOF00owqmy6BU89HaGaGwHKVS9IHfYDuYxBcpMiCpqEbtTi/du8Q6\nvmV00CAiwK0VMIzbddEW5QAHAGwBleU9Wl6t5fEeVlLYtdT2VG07iNkpBMsLxRpf2J+p+dOlTO0p\n4PYEG0s9YgKCcBAkFPcnZk/usWvHsY1nryFieeT2RB3r3odT+LHNDQ6yP28LZYsQCENINWD97ig2\ndscBe+LsLGp0GrdUpYGLCHs8bv6YMeYoCz5eN89RIoDTbFDciVB60wX/Zpv80STC027kf1pH0ET0\ntEzlRhi/c47e6AYiBid732E4cot/tfBfUhNcjIRn+RR/x2n9EqZ4E3EyyJ4YoL6v8hxnjvO8wp+0\nf5kqXn5d+QN2B2Ns0Msa/eyQpI4bDZkUq6TMVb5jfJZBfRm/XqEU87Hh6mGz2cvDs2/gitYohVQi\nGxXW1F7e+eRJqj/ao5wRmT8/wJHSMvWml7ccDyAIJilWibDH0d1bjN5a4+trX2V3NE4l5EF5o82t\n4BHeOHo/DncLt1zhft6m31jjinCKPxN+kRB5jnKDh/TXSCwWaMktFqdSxINpYjt7mPUWJyrX2GsH\nmXONkanHKGk+9rwR1owUdUPlpHKFuJDGQZMkO0SaRcymzPWJSW65RiibfsaEWW7UTvBn27/CP+79\nfZ5xfpdna89hTItor8iIWzpqvoXRlmgcV9FDTbTTJoyBsSZSLbvZ1eOshPuRnTpfnPtr+lrrDAYW\n+aH+NJtqCdFj0MU2R3PXMNcFdESc8QZd8VU2d/vY24whbYkYaxKiQ0eequOK1FDdFTRZYkvrvtNL\n9+4xAZz3CDhkgea6iWEceLKHJXJ2wLZoEKuUad12np3+sOut7aBsaSMs7/WwOsVe/0PeB+y6+dMZ\nhHaP3AJ667gMiAKI+0hpmCCYt2cwYruPJVO0eHds59nnb3+N1oZmbUiHqwda75e9nooAmDJ4ByGY\nFDo9w+4Cu+OAPVme4/PzS9xMDXPZfZJNsxdHUycvRphVxvlK7RsMm6v8a+XXqC+q0HLBp3vghhNm\neS88HVL2OP3w2/gjhffqJwcp0HY48A/sMaUs8zQ/IMUqDrFFSfTTEh2kSTDHBFGySOhsmd1MXzlF\n0QzguK9JUkwToEiSHRKkkdE4zjQCJtPtKV7Y/TiNJZVYcZfu+9eJqWlS2irNLifb3gSX5CkeHnoV\nUWoRlbKUBjTSx/t4iUfwOmtEzV1OCNd4kUcomT4eMV+i0a2wHQwzdHyOq56j/J7069wXfoc+aYPx\n+VvErmRpDklwL3wt86ukHXF6opukSQAwJVzDHyriMDSOl+ZoeUTEgAl9IPtBbgMumPqTi5xaeB39\ndzxgKGhVB8VeD7vOCH/Hp/FS4Zj7BlPGdc5cf4cp73XKo25mlXGOV6f5N+u/wnPhx/mh5wkm3TdY\n+2Q/2jmZ3uYmHneDzUAv34l9inT/iyw9WKbtUdiLR8hoceo+J4Ms43FUuTB8nobspKT5eT3zMFWH\nm67oOjXc9PnWqQ3KJNVtxpmjgYvyYhizojAwtcTmW/2YuyLHn76E5GnTlFzkhRBhKcfKnV68d4sJ\nUHpIpeRwY/5tDbHdgbE2HdoBOmoQC2ic3K4IOVxoyeKiLWqiwUECi+Vh2ikEy7t1cKDIsMY16dAc\nmLcH7ayKepY6xF721fKOGxxK2tlXlNjnYFXZq3I7UNtbgVlBTntZWDt9YqW+C/v3tIDbUtu0OVDI\n2HtICrJA46hM7ZgDvsvtu9VHZHe+44zooy4LLDRGWDRGKRKgInooiH4u8Bj3C5dpCwqGIDIYXsBx\nXKd5zMFWo48SfoysguTW8UZKdPes45PLKLRZYBgJnbbk4KhvmkluMNmYIXlzl7rPSVaMou33b1xk\nGHW/IP+22UV2N86OmeSSeS+nuYyIgY5EppnAMETGnDcxBYFlIYwoG2yafSxpwxyTHahyBQGTmeQ4\naUeMBXGEaDCLiwYFAtTCKma3QZe5jarV8VAjZazQEh3UGx4i6QJNyUnSvcOTvT8gK8VoagqK2aZn\naYuulQyGDnnFjyjoOKQm/dIqp7jIKgNMNmbpKe2gCm3kgoHzpRbVI06aLgflKQ+lAYGCHGCVFEag\njTtWISTVGRA38Co1rgmTbJOkjtqpqyI1wWngcZcJtnOYO7AR78Vr1jivv8U7nEBHQJcE6ikn1UEP\nDhokr+6hLLYJtQrsShqNpEIdlYbPgYBOhD38lJAkjXn/KFt0kW3FWcsNUMeFacBU4CoeZ5WcEqSB\nEx9lJpkh4+0i5wpzJDZLfCJDPeZG8bTwyyUMyp1ON+JHHwD6sMxEYDp5DIdLwhQvAvptiTJ2jtle\nLc8ywfawZxLaPUy7wsMyy9t8P8WIneNu0gHa96NQ7LK9w8ksVoMDiwaxANvilA8HMA8nCNmB187V\nC7ZzD3Pv9vnZvfj3C26aosRquI/t7runWcYdB+yL3tM0ByZ5ae9xMpU4UWmPdDTGjiPB3/JprrhP\nIZgQMgucv/8V4kKaAgFe2HyG4kIQfdGF42QJZ6KCIrbpYZMmDr7DZynho5dNvsRfMsAKznKLnu+m\nWR5MkdVi6OYWmiCTIU4ZXyfNGS+GIGKaAnXcCIZJDZVZcZJr1ZPE2rukQqtsy10YisCpxFs0DQcb\nhQHG1FtMMEtEzvLjxMOUDD9SW+OKfApJ0NGQaKqz+DwFPmP8NZ56GwETwZlDFEyaJRfCtEJSyRFO\nFBn0LrEh9dBuOrl34128l6uYm6B9WaQ84KYhOTmX+AlJdrjHfIeCESJQquBbbXZcg1XgNfB8oknz\nrIv0AyE2jkqkSXCFUyz+wjAtHIywwCO8yCDLLDGIgcgo85wwr5HQ04iSzs6xGO6tFpHFIgFvGdVR\nh7DJUeU6oCPoJqpYp26qbJtdeF9v0TW9w6888Gf8YUHFSRQD6b36H02z0163JPjxUaJNimVjkHpZ\npVgKoecVvnT03zLsXGSTHlYYoIqHUW6xdbSLPSIMCsvEPv82OcJ8l2dw0SBOhhJ+/HdBxP7DMhO4\noD9GTuvlDFcR9nPv7GoLi9qwgn3w0/VGLO9WpVPNzqqEZ09Csbhwu67bniRjHDrP3B/HHrSz7mWv\n4WGnWuz1SFp0tNqSefsYVsDQnr2o2663VB1W+rpCRy1iL9xkNzsQW++JpXSxUtOt4wdlZ2WuGVOU\n9McxWeJusDsO2Ot7gxiZ+zjte4eMN8622cWOlGRL66bc8lJ3utAKLjZXBtgYWkEN1QhSwBFtwbvA\nH0LrcTfh81W+NPodVoJ9zKqjPM3z7BFGQ6GFgwJBZJeOdlJiYHWdibfTiI/4yPWHqaMioVPDzQ3h\nKF2n13lIe5nP1b5DYiODYcLRI7N0e7cpGgGm5eO82nqIOWOMc67XGQgtgtfgXsfbdLNFgSC3OMLi\n5VGk1+G/+PT/jCtV5QqnAIltoYvL4mmm/NcJUGRPCjEuzHEjcJTfPv3POSFdZdI1Q0DJ46eEz1mG\nnhbamEDTr3ItNAFKpytMBS9GQyFZyBNeruBo6uClU8RtlM6KG4NSKMC60McNwkjoTDDLIEvUUanQ\nqTW9ygC3GEPEQDIMvLUmXrNBUfbynPxx9IjMkGuZed8IEXMP92iVVW8fpgBzyjgNwYVabDCyuMrS\nPYMs35/iPvcVbr16hBLneZSX8FDF0W6RKOTYdiXY8SUoEUClzoiwwJpjhGI+hH5TYr23Hy0ssk0X\n6/TRRiFClpndKXRdxploMybOcQ+XGGeWIEV8lKmjMssEf3OnF+/dYqbAxt8NEpJ1TrXFn+KELUC0\nVBgNDjxKK4MPbveQrXRsyTaGpau2gN+eFQk/Dbr23D97VuFh/ttSeRz2ZC1wtNMkFqBar8/aGCyz\nvO3DKhj7xmTN267f/r+jUA4n2tiTbRotid3LCdKZQfj/C2Cr7QYT4iynXW+xKffwrjHFptRNUQ/S\nJ2ygI1MWvLREhYwQRy60UVeaNCMKrqEazYsqznYDSW6TE8LcXBtnqT3E2ZHXqIkeFpt9XNbuI+bM\nkHKu0DORJkIO6Z02FcFLDQ8m7Ne/9rNDErEBDq1FMrCDT6jQFmSC5DnueJfVVooXs4/zeuscFcnL\nY44Xccl1dEGgLPpYModYNVNsC0kcYosBcZ3R3CJepUTLVNkolxFrLrLuKDcdI7hoUsJPT2sbAYFb\nySO06g4MXaRIABcNZEmjGlAR+hoIoom8akBbR++WWaqO0G6rnOJdettbeIRax5WoQCESYL27hz7/\nJqYMIOAstYloOXo920yLk6yLfexKMXr1TZzGHhXZR6KdJlXZwL9dpeQNMNt1pFMBUI0w5xqjIngZ\nYJmEc4ctuhEw2BGSRIw9wvkCsek8O8EkpV4vlW43dZdKCT9F/AQbRTz1BqJhUhdcVPASJtdJJ5ck\nEtEt3JUqcTPDQHsFqaaRc4dJk6CQD7G0MkJejdKnrHN0aZax8AJH3POMa/M4im2UZgvBbdL2ffSF\neD40M6H0dpWWWKFbM1nhAFTsqeAWENmDe3Yu1+pKY2mzsY1jBersQbrDqekWqFmAbddyi7axsI1v\nnWuXFdqTc6zf7ZpruB3Q7UBqzcGuDLHXP7E/7Ofa36vDZVmtc+yvzw14dJP2fJPSVu2u4K/hZwRs\nQRCCwB8BR+lM/ZeBeeCvgBSwAnzBNM3C4Wsn1ev8064/oo6beUZRxTqb9OKQWzwmX+gkkYRVAqFd\n8kKA7WvdbP3FANEvbhH8ZJZMupfoYzs0zor8rvAbrF0YRrplMvDry1yXT/CT7GNQFuiLL3Oy7yLh\noT1ig1mWCzkG++JoSLhocIOjFAnQMJ2svDpG2QjR9x+t0je+hkKbNAl62SBULfG/zH6ZrBCjP7xC\nK+SgpPlYbab4XuCTlAUf23qSuJzh46ee4yuTf8nItTV8lytM6Tf5etqkJ2ew7U7wLifYI4KEzucr\nf8sx/QLhSJaJzAK+apW3xk6x54igCxJOuYkYyxGr5LnvW1dJnwxz+ZkTvLN1lhl3FX9Pnmfl7zHY\nXuu8sbuw5u7lGyc/wxfSf013a5sk29y3VaarvIuZgm+6vsAfO76KU2xwf/MKk9o8L3iqnKjc4Jn1\n5xHeNXll+CzPp57qcPhmggvG48TEDJKgs80yGeI4adLARaKdoTe3iTgDU/Mz1FIutv/7CGE5y3Gu\nkyZJV3EPTznDWl+SdWc3Jfzcw2XW6CctJxhNzRLuz3FCv8bHVy9Qznow+k0qeMisdLH1pwN4vlzg\naGya37rwB3hPVqDfRKjQ0ZpngD4IjH/wrLMPsq4/XDNh+RJhbnIGnevcztnCQfDOLl2zQNPydmUO\nuo4b+3/b08rtmmSrvoiVum6ZZjvHuudhLxgOuHJ7HRB79qO9cYHlIZvcvpkYtuvaHMjz7FmT1sZh\nBTEPy/OsDcrK6rS9o7ddawdxg05tvkFdw729CFx6n1f40djP6mH/S+D7pml+ThAEmU5Q+p8CL5im\n+S8EQfivgf9m/3Gbxd07GIhU8ZAnxB4RACZqN3mqcIGnxJeYVo/yE/855naOkcvGMVwi5ZYfQTEw\n4wJ7Swkqog9hVKNaCSA14YeVp9jzRRHUNg5fk6B3r1OelfX3CutL6Lip49brXFqeoiE56RlY49iD\ns/SZ6yTEHdbox0AkxSpJdsAjMDh+ixPCO5xyXOEh5VXWGymcTZ3jxnVW6CfXDvEJ6TkmxFk25R56\n4xkywRiX3SfIrb2Ex11hiCUkdNboZ50+yHYK9v8o9CT1uId7Slc4vjKLFhEoRnxc5xhvuAJ4YzWe\nnHiRoKvCxOYCXwx9nYrXjZ8SiqR1eOtZIAS+SJkjws3OMbOFhxrORpN0K86r7gdoOSXGmWOhMcz3\nxafZUHtoiE6cuQbCpgl+0P0SBiIxdhkQVnhG/C5XhRMUCPEDfg4Bg7Gtee6/fJXAZB6zC/RPQ+Ff\nmTTnWsRmckQqKiHyXOEk0cAeIXcWQxYwESgR4CUeoc9Y58nmj/i91X/CjPs4K30DzCfGGBNucg+X\naeKiLahsyQM09jwshkf55seeZSQyT9iTQ3PL4DTJN8K87b6fa97jwKsfdP3/e6/rD9/amPeYaL/u\nQ/vdAq2ZDqzZs/YsQDzcRssCMMtjbXCQpSjZrrPOOeyZWsksFgVipywsAP1ZatlZXqydKrGeb3I7\nbWFtPthei53+seZrf10WzWMds+ZpfcuwOHXrPEtlY1FI1sZRBcxHBQJfkZD+RwNWP/qEGcv+XsAW\nBCEAnDdN86sApmlqQFEQhE8BH9s/7U+Bl3ifhd10OLhmnmRL72JXjIMIUbJEzT1Uo06QAp5mDaOk\nMNBcJegtsX20m8K2jzpuzFSnG4peEYnq23T3pPEoNXC0aSoOGqITzXQgi21cNFCp4dYaBFoSIV3D\nkEQGWeFN/SH2tBj+Sol4cK/j0QoGDlqIGO8FsbxymacDzxOXd5gQZpmszxFt51HlBj3CJlVUXGID\nj1CljsqSOMhAeJ01qZ/nPU/g9a2z4Nb2AyoOPI0a4/lbeFtlmooDEYOqV6UsukmU98iYUdboY41+\nckoYX7BC8agXzRApmT6O+GYpqT4E02TBMYguy/Rr61SCbkohLxoydacTp+lCQ2bbk6RmeKgXVUZC\nC/hdRXq1dUxJJGuEGd+4SbK8Q8sroXllvMFyp5+mXKWvtUGylqbgC3FZiZAhTpIdQsU8/dc30WUT\ncwjMCTCmoLHuoEKCmqlRwUuOMFlXmF1XmD2iFAnSRsFpNGmbMmXTR04Ps9IcZKeaYLE8yp4jTNKz\nRVNzInp1Iscy1HweSi4fsz2j7IhRZF2npnkgBHtCmNe0hygoH6yWyAdd1x++GWSicX78sU+w98c/\npE36PdCzgPdwYSTLm7XAC9tz1jl2ELQ/sJ1v/bQnqVjesQXuh0ubHqZq7LSEXS1iV3rYxz9c59s+\nlp1Gsa63c9DYzrXMAnQr49Lirq3fLeWMuf/3ek+KyqOnqfyv9UMjfbT2s3jYg8CuIAh/Apyg8/3g\nt4CEaZpW+4U07IuED9ksE2TMJ1ltphiQVjjnep0hlmi5Rb6ufo6rnOJmYZLN9QH+We/vkOzZ4m9O\nPcvF/+Ec6zt++M8Ar0FIzfJw7GXue+oiA8YKLcXBq8JDvNR4lMWVCSqBAGWPjyJB+mqzjJfzDLV9\nxKQMEWmPN0bOslbq462N81wsn+O47xpfGv8a9wkXiZJll04Cjdpu8lv530f0tTEkE/9mA4+3ghot\no0gtvGIVl9zkJeERQuRJijv0+DdZYpBLwj0oygyCs58k22zSw3BuhV9750/RjhsU+318UfrLzjcO\n1c38iI9r4kkWGMZHmRi7JFxpGkcl5jjOFeEUcWEXCY2aoPId96c4MXqDf5j8c9b9XbzrnOR1zhIL\n7tLFNhnBycvDJ4lkCnzq2nPUj8hUB50orjZLwhCl3QBnX76MOlyhdM5FRfDS31hjsnyTnN+LM9/G\nuWqgjOv4gp35mPCeWyS/Q6do2eMQ/TJUpCjPxZ/i+vIqBsdo4qSOyjZdvMsJSvgJmEU+qX+PN4Qz\n/J76m+TG/UhljdxWgvxMAikiIJw3eLNxhkrcy9iXp9kw+/AIRfxikTc4y7XGaXLbCXQRTFFAqznp\nj33gINAHWtcfhU3nT/BfvfMMp0qf5hRpWhx4n1aqtuW9WvpnFx1v2qq3IdCJWR9WhFherp1fPpww\nY/d67Q1+LbPL9yw1ijUne5EqO5VzuMa3Bd52rbidq7arQqy52akOuxqmzgHFYqdRLK7fonwsesf6\n9mEAL+89yg+nf5da/b/lbjLBNP+f2XRBEO4F3gDOmaZ5URCE36OTvv+fm6YZsp2XM00zfOhaU546\ngdDVg9aWiRyNMnnGxEGTciXAVq6HMj6aigvNKTG4soLqqFGc9FJYDtNsulD6W9QbbiLmHo+Ef8xo\nZRFfq8JWKMnb1QeYqx7F6y7Ro67T7dzERCSgFcm8usjgwwkaoosa7o4Hq0WoNz1kajHicobHgj/m\nSHuBgFmk6PBSFbzohoS3XWWuNsGm1kO3c4uG04GuiIwJN6EssleJshAZRHCaRNgjQhYQKZteshcW\nGb4/wYavixwRPM0qR0sz5Lwh6qoLN51vFSo12sjIdRA0A90tokkdJi/KXidVnzBZomy2e9hs99By\nOEgKaY4ZMwxpy+TEIK84H2SIZeJkWH5th/CDR5BaBpPlWVpuhZqq0sSBT6uhNhvUiy5cnjoetYKy\na6AUNQQNtgfjOBtNAttVLgw8zJq/Fw0ZAZPRzBJPXr/AtdhxqlE3g+FlcoTZFLpZVlIsv5whcu8R\njrnfJSWuImJwgcfJEcJHhUeMF1mnj1fEh6maKqYm4WhpdFc3QTbJBULI7UDujQAAIABJREFUZidt\n3y1XWVscoFFUifl2KXqC6KpITNmlPL9BaXqTxp4bxd+gdeEHmKZpj3X97Av/A65r6KbTvgsgtv+4\nw+bzQl839659nY831kjvf1O3uGK43cO1AMpeo8Me7IOfTlO3zC4FtDzhK8Bp27HD6fCWp2tXnVgg\nbleD2PlnO6Vh0SIGt39ruAwc37+XPdvS+mm/j/24vXekNVeFAx7friCxxhaBuACzkZN8N/lzsPgq\n1OPcedvdf1g2975r+2fxsDeADdM0L+7//S3gd4AdQRCSpmnuCILQRScc9FMm/dJvIH3yi8QqnY7p\nppSjoiuky92s50dABsnXwhGus6ioRAMZTnz+Mjtigprpxik2yKfjhOt5hoMVTuWdhNp5ZlJHmN75\nDK29c/SMXeJxz484YW7yE+Eh/O0Sqt6g58tnaYsKDqNFXExCVSC0W+CqO0TAI/Apr8p4TUU1BNY8\nSTRBpoFKlijzO09Rq04g9M3ymPQG9xnvEJfzuLeblDM1vj7yAG2vzABtWkQQMHEaLZYLyzzyrMT1\nRJifNB+miZOgs4ca3Rh48JPngcpbpLRVMv4I46tLpLbWKSlu0r1RSt1+QrhwtlqUW3X+Sj1Drn0a\nZ6WfopYgrxbI+ad5qvJtyqaXN9TPEZCmOSJO4+cler4ywJ4ZwWsMkhDTIMA0xznRvM5Ya560FMOh\nNAi280TnSmg7Cnk9yMbZBP5WhcRKluzEJEpojCZOwuQ4vVvnEzMBshMPko2HuI8fscIAEqPoDLJW\n28b16cd4MrJFSqqwS4wLfIG8PoJmlPHKHgJCN6rxBI1iiKBcZMR3i4fZZD2X4i9Wf5EhdYlEcAdP\nsszu354juzZAJWVC0iTizJDKX6T++MeoKAGMVxT0SZg9/YP/d5+J/4DrGs5wACMfkpVlmFEZ6A/z\nyd4Ws5d2MZo6Dg6a81pgZXmnJgceeHP/HI9tSAtk4QAM7DU47FJAgJ+3/W2BsL2Li+Xx2pUhlt7a\n2jjslIe1eVgd2e08uSVLbANPcruXbG83Zve27cWerAxOa67We9HaP1azPW/RMYpTYvJEHLXay3ev\nR4EknZj0h23/7H2f/XsBe3/hrguCcMQ0zVvAE3Ti9TeArwL/0/7P95XFhuNp1OFVzpmvs/n9AV7/\n8/OYNQEj1Um9xg96VqHxoox5Xmf46C3+E/Ffc0F4jBlhkjYKnmidciXAH27+JgPhBQb6FvBKFbK+\nME1RZlEZ5knzh5w2L1MkQE85zUp+BndzEK+jxP2ti3zD+QU8a3W+9P1vs/xMD/W4kwBFSqqbGY7w\njnAPPWwio3OFU4zE5ngo+hI5Kcxk/SYTzQUqPgf5RICtaBJNkXDQxEGLLbqZ5jjviseJBX6fgWiD\nj/McL+Q/yQLDHEtMkxJWaeFgk15C60X6yttsTyXQNmXkCzqhK1Xan3XAL4CbGv5CDSUrspZKkXBn\n+CTf4w8v/SZZd4TsqSjf8DxLrh3hWuUE3Z4tWg4HbTrlWNeNPv609VV+XfkDTsjXuM4xso4oVVPl\n0d1XyXlDLAWHKBzLsz7RxyLD9DtXqZsqa5Ee1pVOMS4/JU5ylb7IKrNnhuiR1+hhHRdNpphmgFVm\nmWBbNeiOdGFK8A73MsMkNdzoTZF0I8Hz/qdpywrNtpPaYoAeb5qj4zfoY53czRiV/zPETPgEu/ck\nGfnsDM2wo5P6dkRHcGsUL7t57XfuxfwFN/2/sM0/fOb/YFXtZ/bf86PwH2JdfzSmARWWz/fx8udG\n8f7j7yNnDlqlWWDt4iC4Z+eWLVCqc9BV3A6CdhrkcGajPajnokN3NDgI5tm9W7tMr7l/jj1oaHm9\n9jlZhaosALfzzHbv3+7x23ly89B4cJD12eCnvW67jvu2AGhI5c3fOc+1pSH4JxXbaHeH/awqkd8A\n/kIQBAewSEf+JAHfEAThV9mXP73fheW9EK2NCEtdwzSPuQg9u0v++RjaggybwAlIHNlh7IkZZuVJ\n2hUXBYLUUSk3/Ozs9dAXWCXiyLLsGiLmTDMlX0MAqh4vTaeTliyzwgAXuZ8jrQXCSp4Zn4uUkiaq\n5Yg2ikzJ0xhxgcp5J0ZMQBFauKnxE+FhLnOK4n5yh58yRQIMSCvEyRAij0cpsycG2BC7cYhNEnqG\nJxZfou2WaXVL3OAoXio8ykvkxC28kkKBIJKvRd108hYP8FnjW0yVr1Pd8jNWX8TlbeIXSzhdTQQP\nCG2DVttBreEhvpxDzTYR9DJPdb1AxhOhoahEUhmqspOMEWdKfJd75Us8or5IUCrQxMkl7uF64Vma\nbScPBl5jRFhANeu4hAZDGyuczNwg6ClRdbtpCk4uOB4lXt/jTOMdNpUEV+UpNujjgY1LIJssdacY\nMFdoCC6+7fwsAiYpVhhgBQkdGQ2VOpPGEk+0sxgiuIROMwoPVXaUJBXBi08ss0OStiBjeCXSzgRv\n1s8wlz6GIUmc/cwrKK421ZCHhcwEZSPQ+ZRdFyEnoy+LaH0OKMtkb8R46cwj5DYjH3Ttf6B1/dGZ\nyerVLt6qD/DzlR9hUu3U8uD2BBTL07U+4FYnFTjwQuGA87ZL3OxKDfs5dqmcvZiSfTy7d31Yymel\nsYuHjts3CYvzttMZFp9t558Pc9d2jbX1sCgWu8yxaXstFk1kgbYTaJcdvPXnp7hWSMJdWK3mZwJs\n0zSvAfe9z6En/r5rpbqBUBEQdYPIyC7ueJXZsoP2j2XMOQnvRIlYLEPixDZLc6Pk0jHelh/AjAsE\nKHG9eooxzxxh5y7+wCh9rlWOcR0JHdFpgNMkTYISfmaaE9x76wpuX4WaR8WvlAjWizgKOhPNW1Qd\nLmoTLnJqCEXX6G9tsupIcU06iWAadAvbKGg4aeKrVYi191C8TUxFYElJMc8ozlaLrvIOg4V1miis\n0Y2bGiMsMMo8r5BGpJtFhgl4csTYYZcYbqNOb2uTQqGJGYBGyEG8nkXwGRQH/XhvVREdIJUMxBwI\neQFVqHNGf4MFhpmRJkn0btEyJTRT5phxnePiNKZLwDRg3jjCHlEqzTFiWpbHpAsMs4iuS/RIm/RU\ntwkVCxgBgbriZM+I8krjY9zfuMS51lsURS8Vl48laYhnK98j6MjTMBW6K9ssCUNc9p4m1e6IFCVF\nQ9E0BFOgKnvpau3waGGOOc8IFZeKqtTQUAgqBapKp0GwjsSSNIQ7UqElKsxrRyimo/Sq65x7+mWM\nvMRmrZ9SM0i75IBcx0+L7mRRtDbpB5PomkRlycvVkyfRyh88ceaDrOuP0rI3VObXY0gTUYytBu3t\n+nsBPcuDPVz3w04hWLytPfiG7XkrCGcBeJ3bu9HoHNAN1vn2DEi4XYli/W3d097dBQ4A2X7eYVC2\nANk6bj1nJ3ntnvj7JdjAgb7cztG/p07pdmN2xbj1QoyVkpe70e54puNU12WkI0P8qvLHCJhc8Z4k\n94Uw1X6V9gWVsc/ewEyIPD/389Q1N8KOyV/98Jf47c/+c04dv8Js/zjd8jq90gbrwT5kUaOFk9Nc\nwrGvulyjH4U2vnwZxx/pqBMtXIGODliry4hbBonCHoYoYEQFZkaOglMgmK6RjO3i8VaZN0dZYQC3\nUGOIJY6vzjCZu0X9lMSse5x3mWKJQabzp8hku/nK4Nfw+QoUCXCay/gpUsVLHZVlBikQZIQFUqyS\nJYokarwSPsd3Tn6WM+JbnK+/xvjqAmuhHjbu7eZU6QYJ9y6BdIn8uA9zG/wbVUTBpIttvFTYIUlI\nyDPACvfpF6ng5dvyZ/m89i0eNF/nChHqkSPodEDa16qAAfdIl8gORXm+71EeUN5iQR7kcvseZtan\nKHrCSJEm/2D93+F0a1R7PNwYPkK3sMWYeZPISom6uMsDR9/i06XvM2ouUIy4iJQKaLrKfGQEtfY6\n3o0tjitz/Kj7EV6PncFAJE+INgrDLFLCT1AqkAhnEDHQdJmmw0tV9rBqpFi9OEoLhdSjt9j87iCF\ndAR+3uTh6AUiepavr32VyjUfrmaDlLKKNiaRv9OL9661bdpHfez9y1M4/jcT/Y8X3pPWWbI0y8u0\nPuBWFTqJDhgfriFiAZd1rV3JoduOWVRC3TamxUVb4Gp55G46wG6vBmgvbWp1SLSSa+B2j9qiW1oc\nKEOsTcEu/7PuaWmwLeB27z9f4YA2safN28G7BjQ+0UPtH52m/Vur8Kb6/m/9R2x3vmt6K0bSabBJ\nDwYiOTGCO1zFN1Ym13LT7pNx+FsEhT0Es03L76DlF3m59hiO+QaVpIdruVNsGX2YKZGYtEsPm7ip\n08BFCT8+OhX0it4gzz3xJO54hbWlRe5HpOVRmOsbQoloVAQf254kPkcJXZT4fuApFh2DKEKbCWbR\nkFmnjwFWKEZ85I0godkc2a4E73ZP0cTJseoNenYv0NWzzp4jRI5OWrWIgYsGDVRWGGCeUYZZRMs6\neHf2JOXRAHpY5O3aORxujbZL4QfhnwO/SUTJ4j9Txi+WEVwm6m6duuRi50iCVXcvXsoEjBKbuynW\n5D5qETcPiq/RU9vmyeJL1P0qeSPM0M4ax9PfJusNk/VFyUpR2qJCBS9xs5NYZMrQ29zikdorlAJB\neiubnFyY5qr/BBWfyoQ+x+jCIgl5h0CqgLdRwSU3O5JD0iR307jf9bLTn2QrmeC4MM2cKjLTNUpc\nzHBTHuWNxln6HWt0i1v4KTHPKDoij/AiLanjGeuChLO7TV4KkTHj5HdCtPNOTD80FtROa5UdgeIv\nBnDeVyPu3sTlD+DTS4x45tmUe+700r2LTSOzpfLv/uw8T0xnOcbCe/1QrMCalTxjmeVFv1cnY/85\nqx+i3Xu2goT2WiV2L9wuybPGtgDRqj1i7zFplwlaG4pFz9g11PYA6PupVyzu2jpm32zsG5XlMdvL\nwlqv67CM0Po2kgKuv5vihT9/kN2tIrxHNN1ddscBu9b0EDd3uS4cey+5whBE1FgN58k6BEyc7hpJ\n9zraYi+S24X3qQqvvnKe1qIDbyhHNpegqgVwdZdoVFXKbT8boV4W5RG2jB6Ota9TEz1s+5JkPhXD\nS4W9xSKudgbDJXArNYSGwg5J5hnlce3HNHUn31C/QEny46BFt7DVSV3HRRUP6XiMHTlG9M08DdVD\noTtIkh0e5iec5W1uMkwThaBZoNFQ0eoO/K0sUsuJjkQLB3lClKpBFpbHEJIGaqCGXDWoOTzMe0e4\nlLiHhJjmmHSdrvFN4sYu3moNY0cmFwmyMZSkqAeRDB2fUWG3EmdL6cUbKdJsueiq7TBQ3ORF70Pk\n9RChyjSPbb3MjjfBy4mzbLm7KTu8iILBUW2O460ZNl1xglqJce0mt8JDDNVWObK3yP/e+8uIAY2H\nmq9xYu06fmeJYq8bU4W2LKMhUVdUmi0n8oLJTNc4m94kx3mXOSfshOK4xTIZLcZGu5f/i733jpLr\nvq88Py9VzrGrcw5o5EQQICkwSJRIiZIs2ZJpWR5JlsczHs94vD6za8/Zmd2zu7M+9uyxx3LQjCV7\nbCtYsqItUiQhRoAgcmw0Oofqrk7V1ZXjq/fe/tF4wgNkWeORYZOyv+fUQaPx6lXVw+/c9637u/d+\nI8omYTZp0dd5qfYoIWmLQ8o5Mo0oktjEqVTIuCKUSi7Wplto1BVUVSGzGEerStsKpyuwsLOHYpcb\np1BG6xZxCFVsa00aNscPXHs/yrW16OSlT/Uy0DrEnoE5pOQKWn275zU370yQNcHYKoezKjyshhTz\nmLsD/a15HVYX4d00hDUG1eS1zZuHVTFytyHHapyxAr1J81h/d3d2ipV7t1I0huUcVsmhWdKt99Kw\n2xA7W0kuD/LKuR5gkjtnuL956p4D9n3eN/j55jN8Wv55poUBCvho6jKyu0mnY4Ydyjg6ApPaENVP\nObAJKj3/eZ563YOhiRzwnmX3jmuoTYUvax/k86c/yon1Jxh93xU2glFkVeP4ymmueHZxNbqb9/CX\ntLLKSSNFVy5LQfZQCbq5xH5WaKWGg69L7yNdinN66Ti72i8TC66yQDc7GSPOOuvEUZHRXQLGCLT7\nlnmQkxzkPLQJnI3uJ+VqpYU1HmiewjdXwzlVQ1rWaNUaHOAE7+GvuMZukokuAk9mOeZ5nZiyznxL\nD16piCDodMpJioIXieZ2lkljjZBe4C+Hn6RpF+nQlzhaPo8gaSRdrXS1zzIojPMu/Vl2LE0hYVDs\ncdBpW6BpyMx22KmpTaI3Mzy+/DL1HoXV1jivO4+gOaHiUGiICmOuXZxzHOZ18Sh9rXNsRoPoLvBS\npinKGK0Ca7Y45517GO6bIikkuMFOutxJKoN2Cm0+XvU8wArbWSH2/Fc5PH0Zu7POQHiW3YFrdIhJ\nQCDVaGd5todx7y5uJEYpJkO0O5cYbhljfGwPy6c7Uc/JiB9q4HhHAbuvTtkI0Ig6wYCl1W5W/6AN\n3S6hDYuIdp2N59qp7ftHFP7019Z2uMoLHznK6sFh7v93v0FkIYWDOwHY5IkF7gRTk8KwHmtSKLLl\nOLgT6EzFh53bFAncvgGY8kITfEVuDw8wvwFYJ5PDbWC1uhWtjkoTmGuW96fc+nvV8jlMA5D5WeD2\nRqP5OVTLuc2b0WYiynP/6Ze4fi4Iv3mD22TNm6/uOWArcoOa6KCfGXREVmglLURxSRXa5BRuStio\ns0eokusL46XIO4XniPVkqDZd7LZfYkS6iaKryKrKidjjzNt68SmbdLPAsDSJw1uh2z7P2znBKOPU\ncJAlyEVHNy6pTJx1vBTp0RYYbMxy1naQot2LL5SlYPcQL8F7l54hFN+kEZLJ46OJTEnxkIt5KCou\nDFWkNZNGMVSchkpkKke4uEmnuorNpaFGZMo+B97pAm2kaN66tEHbFkfCbyChoTSbPFw9Sd7hISMF\nQRDwNioE1TweirTNruFLlRjtvUmxxYVo07ihDBOpZ0ik0/QE5rHbqrSpKdxjFeqKg5WBGJtEcFQb\n2IoryFMaymSTkJTDEEAJN9iy+7FJdWbp5Sz3YUgCXdICaSNCwJ5Fdwg4qSKiU5Lc1FtkspKPaXGA\nitNNES9eihQlL0vONgpOHxLbQwrs1Nl0uEiFEySUVSRHE4dUxUDAT56ItMnR0Eku5A6xMNaN21+m\n4PYwL3YTj60gjjaZt/VidIp0BpZ4R+A5Tux6J5P+HeglhV3CNfxSlsvyXrTEdkiW91gJW1f9h5L1\nvfVLA8qsXqsSllT6HzCQXLAxfudGItzmjq2KDHMKizld3ApicGfHbeZvWPltq/rDCpB3G3BMoDbf\nsTW8ybqhaKVErJ22VX5nnt88j9XwYn6DsHbg1k1R8/WtFnkNSOyC8H74xuUmq9drbCeJvHnrngN2\nWXQzISVoJYWIhqjr1MpO7M0GXqlMzeXEJVcYESe49PYj+CmyUxyj3menYPjoEJdwUSFmbHBQvYjY\nbvBs6xModpU+ZjkknUP1i7SJS3QxBwiMsZNl7Fxu9jCi3WSPfIUWeY2AVuSpxrNUqw5KihtvW551\nWvCkK3ww+XXyiodpTw8rSoKq4GJR6qTpFJkS+knXYggZkdZamkRzk/q0DXFFx1ZpwjFQRySKbQ5c\nyRLBbJ4VLUHZ60a0awwyyRX2UmwG2F2epCw5adjtiOgMNGcYqU0BAmJKRxjXecBxmk0hyFy9i1OO\nB2irrREvbBJ1p2naxG1jzEaDus3GhNFHQfCRqG3gyDew1XSaGxJVw4k9X8dbrbBDvUnaE2HKNcg5\nDnOAizzAKbxCkTrb70OmiYZERXDR8MroqoCek5hz9yLLGru0MdxSmYagoCGSYAVFU+muJknZbUy2\nJ7BRpo6CjkgVF3bqdCpJDrSdY3WzlenxEeKPzeAIVSjg43DfOQpdPooPOSkWg7Q3V3mSZ1jo7WYt\nEIeUjSPdp0jEl1gnSA0HTr1GcCiHS638Iwfs7ao9t0ptPIv/Yy1oWzWa41t38MxWp6MJaNaQKCut\nYc0bsfLKJgdsZkxb7d/wveB6Nw+tW44zfzbflwm05s3Equgwf291bsKdHDuW31nPLfK9Tse7b0x2\nAXy9IRr9caqfWaa6GOTNXvccsOvYSRMhRRtJukjWOsmcbEHfkpn1DxM/vEw0vs4qCXJhD1nBy2f5\nOAv1bmw00O0iy0I7vfl5Rq7N8c+Lf8xR73m+6X+CMWUnhaafT6b/O6pTZDw4ygqtLNNOrTHDg3/5\nBqPKBPL9KoV4gKrTRV5w8fiJE/Qxx6uPH0WUDFoCayweTpDIbzCwusBKWyvX5V28oh9nsxZGknX6\nlRlqcQV9FdSSwvTRbrwbZbonl6ECSlbFFyvhWmzQ+kyacK7AqccfYmJggL/kKVxUkWwaX4h8EFWS\n0RAQgKAjh81Ww0DAcaSKc3cV0aNjO19n15cn6dq7yunBI/xGx7+lyzZPE4mryl6iT2VoijIrQgtH\nOU3EtcFa1EA/BtmHA1z07WbIPUtXdonIqwVqB12EDm/xCC8RvWWBjbNOilaW6WCdOF6KSLqObV1n\neHGOSOrLnH7oEFJU44H8Wap+hZJjO+N6mgHknM79Vy4wnRUJIFHDgYGw/f+GyA1GmWCYcxxm0jaK\n5NGISmnirGCnTjvLNCQF0aEzJ/fSEES+zvuwO+o8FH0Fj7+C01EiR4BOkuQIkC+FGL+5B235ni/d\nt0gZzK938st//Jt8oPQFHuGzzLBNFZidsQlk9lsPkzYx6QYrIFqdklbO2gRkc1PRzZ1AaJ3NWLYc\nZ+3Yzdcwu3WTLoHbxhlrup71vf91ZR3CYJXomcBsUjsmLWRKCVXAJ8IBBb515n386ZUPMb82xnYy\nwZu77vmqXyfOdG2Q6Ylh1uU4eU+A+oYbbVmmqPtoqDLiqEF0KE3Uu0HGCHG1uZdeYRb3RpULV4+w\nf+cFlEiDlUgLM5VBJitDRPU0veV5vOkKz0y9h3q7TCHgZFIb2h4BJs6Q7/RRyTtpmS+yx3mNLbuf\n6/IorS0bBIwsPcICZVwIis5KMMECveTUIEmhlRAZHNQ4LR1loDjLw4VX8RcKCBvQrMqsjcbZ8jVQ\nRJXw2RzKagNXpoFc09BCdrJBP153nt7SPMPr0wQ8OSSHRgEfFaediuSkhIeb4jBj4ui2RDFo4ApW\nGWaCvsQ88YFNjLhB0e9i1RkjTBodkaLgJZ5Yx0kdJ1WipMkR4ATvoLetSDvLRNQtXJeriNcNbKtN\ngpECRmKJSDSDI1XHtVwjGC2Si4fYCEdxUaGNFG3CMpfce/FEK8SEDXSngF1qItg1QlMlNDHCtZE+\nvFKRdnmFiG8Tp+ylgY0zHGGGPkp4yCOzrLdTqPuZy/SjCnZaB5OMuq5/13izSYSa4KBFWCNti7Be\nTXBq/WESoWUcRo1Uup1VoRWns0I4uolXKhGQC3iDZRZTvfd66b5FyqBcNxhLNgn23oc2rBMaexal\nsH5H52vtME3wtEamWkOXrJuV388YY+W1rZGncCctYrW5m92zFXSsmmrzuVbttPmerZkfZodtjjiz\nboxajTNOy2cxs0rMLPCMJ85f7n6SE6tHGJu1blO+ueueA3aq2E5teRdLF3opO70Y3QI2pY6ETmPF\nRrYYJaanCQ5l6XPO4NJaWax3cch2AWe2wR8983M84DmJvyvP2ZH9/Hnlp5laH+bp6p9wSL2IfU3j\nF+c+RdMJPUyz0OwmLq5jt6mMPTwMMwb3Xb7EgepF5rRuXpKOs7E/hYcSITJkCJPTg3i0Cmf89zEr\n9hEky7v5Fj3iPBW7k7etv85TyW/T2LJRr9hp2iTSepRGTEZTRPq+nSS4mseWb4CiU97rJBltxSsV\naE2v8tDsGZwtVcSATkOwkZYCrNpipGjj2cYTXNAOEbRvoYoKTqo8ybdw7KjiGKkwLXSTEYK4qJI1\ngiiohIUMnSRxUMNBjShpJps7+IvqcVrlFZ4WvsCe1A2UV5uoVxXyu3y48lW6ZlMUPE6UGQ37WY3a\nqAOH3EALS3SQZJAp4uIafxH7cZohhQPdl6janSDrTAe6GHp5nmrdw8WhA7zL+DaD9mkawxLNmxJZ\ngrzCcTaIUsFFCS+baoRMPkp9ykM4tkHrzkWGuUk3i9RwMMkQVZz0MI+XEsm8k6kbO9FHReSmyo3X\n96LZZdoSSzzqfI6Ye4M2VwpjcAJKsHqvF+9bpgrAaU72HWVi/2Geri7QNVdGzpe+x51o1WPfTYGY\nMw7NyTTWTUATzuzc7oCt4VDqXcdZNdd3A7ZVC22ddG7lr61uybtlf+aNps5t56K1e9cs5zC/RZij\n01TA8LtJ9uzgC4f/DelLqzD7xt/2gv+D1T0H7OxfRamNd+P48RI4dBoZFzsPXqHc52FiYieIUEj4\nmKGfUW6wW7yGbhfJiQGEHvgP//p/x9ZS54a6k6/nP8BsepBK0suXmh/hjaFjBEa2sLWX8LprOIUq\nP2P7EzxCiVNsUWKQ51rfwTe9T/EO3/O45RIyGhc5gEyTPmaZZgBfpcT9qa8QjOWZC3Yhon932Os0\ng3TEUkx5u7mu7qKvukBPc5Ep7yBV7NTcDi789CHC9QzDjknKXx8nUCqwszjJROsIY8GdTB0YZJ/9\nMl65yATDCIqOfOuLWmEiRDrdive+Iv2eGdpIkSbKvNCLjyI1YVtrvmh0cr2+k04hyRH7Gc5xmDJu\nBAzclFnV2jFUgRWtjaSzi5HQHMqPNVl4opNPx36WRzOvcL96hrPSAfwHcwQG8rzuOYbkafJBvoKP\nAhvEOMWD7OMyXcvLdF9OkbwvQaY1yCZRvMfKiHqTB+WT9C0vYtQVbnQMsCLqKCRwUsVAvBUt4KJS\n8VLf8GCkJGp2J2lizDDAOnHSRCnhoYd5HuAUfcwS3soxfXGURVcvQlpD/x0DRnQ290c5UX6C+0dP\n0tMxQ4o2jP43V8bDm6IujVOpLXP+334I7UyI0d//6ndVFKZ6wwRwEzRLbHeipnHlbnOLWaayxARa\nkyYxp9aYx1hVKaZszrwRWDt36zFWDbfGnVy1WTp3GmNMQDYHMZjrndqFAAAgAElEQVTqE/Mc8q3P\nZj7XasGf+sg7uH74USr/9TzcfGsNc773KhGXSqR/HbVXRK3aMDZBD4M/usWga5yVzQ40zzb/6abM\nkD5NdyPJmG0HZa+TxEiKm4wwqQ5iKBBvXaVULZOa6mDDFcPdksftL+JUqtibNRLSKi6h8l1Fyqyr\njw1njHYhyR71GrvLN6g5nSTlDs5xGBGdsLRJ0emhs7lEuJJh3RnBJWzPcXtb8zVUReFFx8PINAmr\nXtabUSR7k03aWJbbyPRGcGg1rqk78XgK5D0bBOp5QuIWiq2dZLidtBrGYdSQFA2b0CCiZthRmOSw\ncB6Hv0afOEUHSZxUucR+sgSpCk7clPFSxEENj1hitHaTw/lLPOOPU7D7cFPmKnvYUOLYXVu0q1la\nWEfzGOgJAUelRpeUJBnsICUnuGLfyf3ZMxzJnEeMaVRcTrIE6dSXyBFgixD3b55juDCF111hQwri\n0iuEm1m0iIgh6vQwT9XmYEIcYFweYktcog2ZFtbYIsRKro3i2QAhf5aelkVWulupKC5yyTCFmI8W\nYZ1EbRzVJdEuL9Grz5ERwzRkG7hAtSvY4k1CxzaRuzWcvTX8oTxZIUilPkrJ5iFfCtzrpfvWq0yO\n+lSFmfF2Ii099Hx0N3xnHmFlm5u1WtbN4bzWh9X6bXam1ghVuNPwYjWsCJa/W5UY1gxqq3zPCtom\n9dG86xj43tQ/K2Bbc0Cw/Jv1363fFNQ2L+pj3SzFe5i+6aIxswrZN6fe+vvVPQfs0OEMwz83xqQy\niLYooikSG2Kc/tAkD/pe4o3x49QUG8qtjSpHs0FfKYnXW2BZSjBPLxc5wIrSyuHAGer77KQC7dQv\nOqikPJQ7/GScYWyeGoYHKrjQJZEiBpu0s27EKetuMkIYV7XGI5lTyNEmJbeHrwvv4wN8lX7nNFc6\nd3Bk9RL9G/MU2t0YMrToG/zr+u/yp8pP823pcT7Mn6OIdVJSjDhrzNDH6zyAhkS9aedU9QEedpxk\npsVJV3ORdmGRmm7jhjjKy43jaLrM+5RvUDfs1OsOBtfm8EUKHIq8QZ80CwYsC21c5AANw4Zg6MTE\nDTpYop85dgvXOFy+yP7UdW72D1OzbycOXmUPq84E/tC3OaydZ3/5CvWISLMo0LGS4l9VPs0fDH6S\nP+r9OBkxSP/4Aq0XNtjdco1TnmO8YhynT5vDLjSwG3XCyRxeoUL9sI2C24esaeyujTHuHKIoeomx\nwc34MFMMsmy0U9G38OglPOK2fd62qaJ93k7PQ9fYfegSp7vuZ2GuH3XSieZWGJGneNfmCZZbYqiC\njFCHMWMX445RxN0ajkgZbyRHYF8Ol1ImIm/Szwyns8e4mTlES3iNwsybf0f/H6Ka6w02fn2O1C+4\nWPu1R4ltPIOYq9GsqHeYYczNOj93AqR1Mou1MzU7bquEzuxsq9zO4zbB0Tyn6bq0ju6ybjzCnbI+\nuBPM704QtPLq1s9jvrZ5rHV4rwaoLoXq7hZKv/YIK//FzervL/4truqbp+45YLurJS6dOIJ+VMdQ\nRBRXky5xgT1c4YB4mfeEnmdcGuGrPMV1djEr9vPH9o/RJ00xwDQDTHOTEbYIIWCgIxKLb/CJj34a\nu6dB2hblK5Mfwhkrsd9/md35m8zaekjRym5SOIUqy0I7D+TPsL9wDaFisLM8gSZJ1J22W1NVBOKs\n4zpfQd8QqX3IwZY3SEEM4LGX2CtewkueDpK0zKaRFmD64BDBUJZHeZEaDiqKi4ZnOxb0JeERrss7\n+Wern2MHU2Rbg3zI8SVCxhajwg3+rPHTvMH9CB0G19f2UF318B9b/k/kQI2sK8gqCborS/RVligF\nHHQqizymnmD0/BTtjRWMhEBR8uGjwJN865bao40pruMLblFac+J5sYpkM2iGJIqDDh5pvEzb3Aon\nOh+mM7yE1iOx5QgTJMs+4QpJqZOcEEDUdASfwYYcZdw9gC4JiILGJddeXpKOU8LDPi5xnV1c13Yx\nW+/jQOk5dm5O8hfh93PDGKUZFvmZX/oMy2IX31z6INW4Qkd8kS7fIvPeLq4JOzjacopLjr2cyR3l\n0vxhls52UnE76H5yisxnYmRmWyjsiSDfX2NpoJ1ZuZfNswnqSS9rhxRCic17vXTf0jXzjEBtzcWx\nDxynczCM53e2eVqT1zVzpkvcBgGzs5a509xiDWaydscmyFst7NYNSnNWonU7zwRh81zm65jTcUxa\n5e4IVpN+sRpfzPdc4vaNwOqmtPLq9U/uI7VzF6//qpvUJavf8a1V9xyw29zL+J2LVEWFvKdGJe6l\nJtpoNG24pDJ7/ZcRBI1vGE+yuNFLWXdTCjlJNttI6xFkWxNZaNJGilZWuLG6i3LZw2N9J+iuLJLZ\njHLWeT9+V5YRaZyS5KYkeHBRpZ8Z6tiJCBki4ibKlgqXILwvS7ttlVbHCpogUcZNjHXW/DGkNYPY\ntzIs72+l0O2FDZG+2iJxI4NkU6mXnaw6Y5RFFxIaXoq4qKBvSmQXI9SqYVaEBKpgQ5abhI0Mw0xS\nlDy4KBMmg08oIisqBZubZlFCVyEltSIKDVYrrSyPd5FyrLAZi+Bdy9NVSRHPZ2id3MARqlPdYWdH\n8ybZqh/NKZFgBZkmSWpUHA5yhh/vXI2pwX4WW9pRW0TacyuMlm/QFAz6YgvohoDqUKiyrVapik50\nRJxilVzIR0HykFbChMnQRGZFbmWKQbYIIqGxRgtZPUSy2s1+QyAkZvBRIMQWiltF3NfEky8Q20oz\ns9BLp7zMU+6/4rRxBGwGN8QRXk09zKuFh7kh7iLs2cTlqqAaCg5fDR2ZwqUANNwIq34y0TjatA19\nTaHSrhCK/BNg/02VX4BaTsY90EauRSH2tJfYyavIS+t3TFspc9vGbnbAcCetYaUczE7ZpFCsKgyD\n29nTd1vhrfRI0/Kw0hzmJqZ547hbFmjVdVsHLJh0ign2VnNOpSNG6qE9ZOP9LM1GmXlRoJ7/n7mi\nb46654DdF59m8PgXuCbuIil0suGLs1DqxlWv0O+epdc7i45OSN/ixnQ3ZVzE4kvMZAdY1jtIh6P0\nCPMMM0GvMcf58aNMpUZQIzZaUmniq1l6Dk0R96/TwzxnAgfREenjAjt1O6KhU2KCmk9mOZvA+9Uy\nhk+g0WqjjIcyLhqGjVZSTD40hOLQ+OAv/BX8HKzF4tjHdbzrRSKNPATh1MgRXtz3EDoidexsEtne\n9Jtp48zXHqQj+hq7afBTfJ5QLI1Agz3CFZ7ncZZoJ8Im/fIMXor0CbP0t81SavNwjWF0RNIrcVJf\n7eLq7gon33s/j4+/TNvEKuKyDg6otihUYjLvXnuWycYgX3W+h7ZbpqQsIdaMAJ3aCm1qmhejx3mu\n+zEC5LgvepZD0fMc4Q0C8RJa0IbiarBqJLih72RAnCIqpPGKRZYjLcg0sdFApkkVJ3nDT12wkyfw\n3fxvT7OMVrZRtrloRAT2cxEfeSYY4iUe5r7AWX6K/85vvfDv6Kit81TiOXr2zzNn6+Zl9RGev/xu\n5pRu3A9sMbzzOo28kzPTD9H3/gl8e3OUfsuHcUJEPC8j7hagDoJTgwo0K8oPXnz/yKueg3O/rjPz\nib10f+r9HPvY/4NnZYuqpn6XVlC5rQwxU/PupiFMoNTYpj/M7tdpeZ5pAS9zW7pn5autihFzI9IE\nWlOPbe2QTSrl7g1I83ym8cYEb3PD0cz9tgGypLC5fweXPvUrzP3KApk/WvlhL+k/eN1zwD6zfpSr\nr32AxL4kicAa7UIKl7NC1gjyTPNJRqUbyEITn1Dkf4n/Z7xCkXmhjW/Of4DVRiuVgJuImIGGwKfz\nv4jU12Sk/xrPup8g1dFONJIm7/IjYDDBMEV8uCgjqxp9Z5JEchlUl4y+0yC308+3f+1RNrsjpAKt\nLAqdTNcGyJcCPJN7Hz8R+iIP9pxA/XWDtu5lAo4Mm3t8rNdD1HQHeZuPM96DTDPAA5yinxkqOPFT\nYMfQBN0fXUA7d5o4u/gcH+EXCv+VdtZY87XgEUr49AKt6hqhQoGU3s6VyC5USaKEh0vsp59ZBoLT\nvP/pL1MP2Bm3j5AfDXC4eJEH596AfiglPMwJncwF+5lkiAlGvqu2uI+zPLTcIFTJkX53gGrCRoAc\nhzhPglW2CDHNAN22RTrlJD4xz2OzL/PY/KsUDji5ERrlFY7zPr5BJ0lkmlRw4a2XGSwusNtzgyV7\nK4tCF69VHuLq5l7UWQeXywf4Df0pfGKB3VzlMb6Dig0NmXl3N8GjG7xROMTH9c/itBfIlkLMp/tZ\nibSxx3uVH3d8gW/PvYepyzswXhVYK8QR1nT0KZHRT1zlvsfP8LD9JNelHVy3j1L2ukk9036vl+6P\nTJVeyjD3c00KwU/y6PG9/KvXfptJzWBDvx23akr1TOA1O1yrdd26aWndfDSf07D8u1VlYh5jpUes\nvLhVX22lQaxZJeb7s0bB3p3FbWaMhAUYEAX+20O/yCu+g2z87CylS28tNcj3q3sO2LlcELeusZmN\n0SPPMeSZQFR0As08wVqewEqRLXsQtUtmIDLJQG2GgZUYS1ovl+0GggCbREgTY5oBYp51HPYKuiSy\n6Qth+LYH4dpoUMdOghX85ClSoiEoiOgkjFU2CLERi3Ahtg8zq3mDOFuESAsxlgQns/TRF5om/VgU\nVVMQawat9TUML2huAWEFossZRqQpOjqW8biKqMgoqERcGfoSc5xTltGa+3ij9gAPNd8gJG8hG1Xs\nwjajV8eGIBgIgkGOAAG2aGGNGGns1FGcKkd2naa24SI3FWSr089KXwvpbAj3UBl84EipyLpG2eFm\nxtZPphyljhO7cY5ZOlj1VAl3ruGRi3SzQAurVHCxQWzboFMXUGsKy7524sImfcIsp7gPFYXWW9dP\nQaWOnTJuQrU8/avzdEYWifm7yDkDqIJCCS+6JlE1HKRoY4VW/OQAtqNqK50YNZFIS5oFfw9XSu+i\nW5lBbdhYE9qo2VwYhoS65aCmOmlINrBBKe+DogFRAefuMon7ljlQO0sbi0TFNV61PchC+Z+MM/+j\n1Ziv0lhWyR3vI2Ic5iIfIDBwjoSYJD0FunanwcY00Jhd791JflZFSNPy593DAu62olgB1nqMyTk3\n7nq+NfjJmvFtNfNYbe+GDK2DYDQ7uTR7mEvGYSZWQvDqLDTN28Jbu+45YMerG3z4yOf51PgvE2zm\n6RmY5xL72aHf5Onyl1Be0Hkh8Bjprig3g/3EU6scvXiB5N5O7B1lUkIrpzlKzeagLbrA4nI/W5tR\n/mXPb+O3Z6ni5CDnaWDHQY2HeA0vRdIKjB05xqYW4P7mGyRtHUwzyDw9HOQCbspcZxdhxyYhxxa1\nkIPXhAe4wm52c41VKYGvUuT/OPX/EhlcQ+0Scb6kcXTlAjWXnbmfaKfgciOisEWItuw6x2fOcL7W\nzXKtk/WNNp6NvRPZXeUn9S+yYrSyJrYg2QfJ2MOsG3EagkI/s+xkjMOcZ4xR1khsOx3HF3GdbvDa\nTx2hNmJjYriXLmGRcDLHnvM32V2fQGgV+aPD/4yJ1QATwk7ixiIn2z9IJ0l+UfgUPcwTZhMNievs\nooiXT/KHDKQXyG6EeWHknbT3JlF7RL4hvpdBpvk3/JdbsyfbmGQImSZKWYcFsDV0DBTWHC3YnXUi\noTS1dh/dsws8KOZ4jnfyHO/8bme+mU5gbCi8Z/irNG0SS+42dEnA4a0Qty+zlurk0upBrqX30rtr\ngpaOZUojPoxFGdaBIqwNJrgh7eCyezeHty7hqtb5s+BHWB+I3+ul+6NVahNePM1ZdnBB/1P+5PGP\ncdSd5MXfhnJ1GwSdfG9sqY3bag6rCxHuDIOC26FQVhrk7p+tudSy5VymuM4EcAe3NzurbFuDHNw2\nzZjgLlqeb9hh94/B6dJRfv63P4v22reA06C/+R2M/6N1zwF7JDzOnO0xajGZRWcbJ/S3c728iwWh\nB/wC/Y/NMm4MM50ZYsPbwlhwlPP7DvNG6AjzQhcAdmpESLODm3SEUqzZWvna8k/QGlwiEUoBBmG2\nsBt1/lD7JJvJGMs3TvPvl+bpCy+SdkZZEjpYo4UqDio46WCJf8nv823exRYhHhROkqSDLcI0kZFp\nInh1bh7tJ+QL4LDX6N2dQtshsOX3UQ8p+DdKBFcLLPQ0cfrLVPskJuaGmF+6D+PbItd79hEYyDMw\nMs0Z4QhCFR7YOIc/WCLkyBLJ5mhdWoW6wNTeIdbcCcq4uc4u5kf6ICKwHEnQl55naGket6OMarex\ncCDKDW0nZ10HCMpZhlqm6WSJhjDP6jWd5Wo3U/sHGVVuECDHFWEvPczjocQ6cVYibaQ9cXDouIQK\ngmAQJIeHImDg1kr0NRaI1XOcdR8g6whCAlItLdQDEo8Lz7FKguvlvRiToJVl3FR4nOeZZIgFuvGT\npxZwkZGinKofY49whV92/hYpqY0tQuQJUNCiSF6dluFl3uZ/mUFxCl97ic/aP8FZ9/0wLzOgTBPY\nyvPZsX/Ol3xl1KjEippA84p/47r7p/prSjcwWKbJM/z+C+188+AnKf5eP49/7hsMvPQG89xpT2+y\nDZYVboOn2VHDnYl7Vp21OUvRuvFo/dmqOjFvBlZZoHWz0SwzPtXsqk2A9wjQL8LYo/fztQ+9lxdf\nnmHlYoAmz4Ke4s4e/61f9xywOzxLlCToDs2SqwY5s3SMpXIHZb+XUFuG2f4eNmpx2qor+Iw8mksk\n5WphdqqPhWoPrrYyXd4F2uyp7SnlSh3dBkm9i1zJz4YeR9Q04pV13GqFF0OPUKs58aoTlJsbLGR7\nmF7qpd6u4PRU6WUOEYMmMnHWGdYmUZE5Ip2hu7LAit5G3uWjKjopOTyM9YwwUJohXk5zoXMffimP\n215kwxHDWahjr2sEiwU8RhEtL5LWouQFHzvEMSqam61miAWhmwxh7IZKRougGQIeo0RAz2NXGzTq\nMna1QVjfwiVWyBBmIj5MOeRmYGWGlqU00bUtGu0ymUCAhbYOrrKTiubkneoJ2m3L+MQ854Q8DXWL\nrBoiaXQh600CRg63VEYVFOrYSdIJbqi6HdiooyKTJUgP88RIkyOI1yjiNOqE9QyKoVJ2ukm2tnE5\nuIuy00kvszTqdpoNhbAtTbnqZnkjynD4BptShKV6J/U1J4ZDgKDGfLaXI+JZHvN8hwscZKy5i3Q9\njstXQpHryO4matmOTy5w1P86J+VjTAsDZIsxwo4MjkqDc5NHKSpuhEAT2dtAL/1T+NP/XOWBPK9P\n+LB5e/A+NUy7fQ1nSKW5bwNlfgt5rvTd8VwmNw23O28rYN89tMBqHbdaza0qEWuYlHmDgDs7ZqtR\nxpolYp7LDah9PqrdYRauh7luP8IFz0GKEx4aNzPA2N/hNXvz1L3XYUtlusQbdHqSvLL0GM9efApd\nlmAgRb3VzlerH6BNSPEvwr9Lv7CtnuhnhvNfOcrqYifCT8LuHdeJxdJcZh+T5REqNTe7Oq+QSnXx\n+rWHoWIgLhkIOR317SLHel6lfedZLnUd4+qFA1z89n184sN/wIPDr9LKCuc5yBg7eYXj/GTjS+w2\nrpN1+hhMz6PVZMZ6h1gTW5hkCDt1BlbmCa6V+A97fomj1TN8eP0vmOoeIhMPkQis8a7FF2m7sUn1\npgPJodM/MMUjXS8zJ/YiShoN0UY7yxSdXr7Y9UH6xBmiQprx+A6GozcZak7xsPoKNdXOir2FkzzI\nFfayVknw8ROf48DWZfQWgWyrh9VEjCRdVHGyt3GNp/NfQdI1pux9fMfopWvvLC1Gik05zCvq2/Dr\nBf5v6d/zAu/gRR5lL1c4zFlGWWWVBGskEIBDnMdGgzl68MsF7FIN0QkOoUrB8PJyywO8IryNHAGG\nmGQsv48mNnYfv8jYhRDPXXkPtmM1Gm47Ut5g7sQwxpCO/XCZWtWPLBm4qBAmQ7nm4UL+EL0DM6g1\nB1OLo8xlh5j076C5W8LnyTMUneR8JUzTI6OWZYw68JKIsWhDjSiw762rpX1zlE7jcoatT5zhz+r3\nce7gYX76d5+n7Q9Oo/zOFMtsKz40trlsq1nFLBNQNcDHNvBWua21NtUgpknHlA9aZ0NaM0NM4DZf\nw5pxYuaAcOv9dAHZ93Rx/ece4lM/+wAzzxvUXzmDUbUy2z969QMBWxCEXwU+wvZVuA58jO0b3JfY\nvm4LwE8YhpH7655/ybmPOHtoCjK0aNx38HXeXniJHfZxfJs5VpxtLGg9fHHlZ2gLL+BwVCgbHqb2\nDKG3SuAFVVIolP3MJEdw+yoMBKfpVWbwRCoIGCwu9VGLOvGEi7wt+go2uc61+m5G9TxPdX+dh594\nCWe8jG4IxI11ZEGjIrjYIkRS6aCGnTeE+3hX4AV8jSJfMj5ETF/nJ8UvkiWIHoOCx0mfc4awkkY3\ndB6aP82cv5u1tijFFgeLSoK1rha6Li8Qkm5w3bmTmflhHEaVYHeWrBgktdXO/PUBzkpFOsOL7Ou/\nwLyth7pkZ0SawFcrE63k8HjLHJAv4mmU6ZhephjykDzSxnh4iEvNfVysHERyN1lVkuATGDXGkCWV\nuLDBk43nKBseTsr3E5YySJLGd3gMBZUneYZOkiRYwUuJh3mFHH4K+HmF47io0Elyu1MSAuTxc4GD\nZIQwXqFIAxthMvjJI6sqqmajoPggYlDptfNi+nHqaw7ymQDVipvj+gnul09xIvYOVpQ4f8zHWKWF\nycooatpJ0eujqShosoRWk5laHOZzr36cfK+PjDeCXpC4PHMQh1Cj3u/YRoUcIAnQqf11y+1vVT/s\n2n7LV1PHKOrUWGdhXuQr/1cU79gHCXTo9P3sDLuvX6PrmSmm61DSb8v2ZG5vSFolfKbJxuyIzVwS\n68R1gTu13Hd31KaM0OpSNACvAP0KLL57iOu7d/P8ZwdJvyyR2VBJzm1Sa2jQMCH9R7f+RsAWBKEb\n+CQwYhhGXRCELwEfBkaBE4Zh/IYgCP8r8L/denxPjWsjJFfuAwfYXHWiA6v0pObpURewqzUi3gzX\nm3t4uTDMoO8GiqPGit5GqSWI7FFxhctkcyGqFSdruQSdrnkcRpXquhuHu0pX6xwetULOH8Cu1DgW\nOcmy0M5lLUjMuMmB+AVs8Qbf4TGSRiedLFHGjY0GXSyyIUdJ0co0A9zvPItiU1minV5m2cEN5ugj\nEwhS89nYXb1Om7yMFhQYWJumXreRFNvIBbxsBfzM0Yt/apI461w0DjC32Y+sNvHHs8gOlWw9xNT6\nMI28nfVIgqHOcVTNRr3poOJ24hJqiE0DwxDoZY6d4g2CniyTiQFO9B1nU4ywWO9iSwvhNQrkFD8T\ncj8taoqIsYmNOiPlFaSGQcYI0SavUpftZAmxp3aVkeYEuguaokROD1CvOCnhZ01uZcI2TIu4Rhfb\nll0dkQY2luhgkS6cVPFsVOjQl/DH89hKDdSaTK4tgORX8bVnKa96KdU8lFQvmkPCXasSWdvCI5RZ\nlLqYqg/S9IjUBSdusURTkGg0bVAFQdHIqGFOTz5I1L2B2NQhA4u1boSgjrhLQ4xo6JsS1MDWXvuh\npu79XaztH53aIr8KZ77gAgYI9oeodgUJr+p4nRILHSHs/jTu/DT+NBhZ4w7O2lRzwJ3mFlNuZ3LW\npq7a6lzEcryVOnEBSlBA3yFSW40yI/bhXN9iNrKDS10HOW3fQ/ZqBq5OAf94TFQ/qMMusP1NxCUI\ngsb2dVwBfhV4261j/gR4he+zqDfXY8x+5xB0gbcnhy+R4ULzGEP2mxyNv0ZZdOJtFki7YvRLM8hG\ng5TeDosC7nqJ3oOTzD/bS2Y5Su1xiXmli+VUG8IFmbYdSXbsucaTvZ8hY4RJCW10y/ME2WLRUyKh\nbGAgkiHCNfaQFYJsCHHy+GlnmXfyHM/wJJtEeJQX6Wss4GuW+THv1yiKXq6wDw8lJhim3PDwi8lP\nE/OvUUkoFEadbAoB1omRI4iGxDot5FkjgBMfeRSpwXq1le9sPMF7o19lyD/JpQOHaLxoQ18UaTRt\nDGVm2JW/QWHQQdHlJO/0kxYjOKng9+aRfkzjin0vf9j4JG+3vcAD9lM8YXuWFaEVFxWGmWBnfpKC\n4WfN6CVf1tiVG+cj5S+hu0VKHjfz3jZa0+v4CiWu9u0g7Yiw2Ojmzxc/ypLRgTNQ4eHoCwzZt282\nbsooqLSRYpoBNokwRy/lNwLk6lMceP95xJSOVpApDbpxUmPUfp2ujiTzRg83cjtJFvp4If0uXjtx\nnKrooumREKMa4V1rBEMZ7P4VGrKNXFKGOQFxqAFtAlqfg0N9p3FU63zr5PvR9uoofTXs/jq1Gx7q\np9xQg8C7c2z8cGv/h17bP5q1QH4xyUu/0uD1+h4U99tofPhhnn74GYbO/keOPqOxdlJjljunlMPt\nzrvBNjViUiE2thUe5iaj2ZFbB/uaG4nmuXqBzl0i/L6d3/v8cZ4Rfw3bH76M+sUcta9Vqecu8aNM\nfXy/+hsB2zCMLUEQ/j8gyfb/wfOGYZwQBCFuGMb6rcPWge+rsbKLdRpOO1KwTrngRt1QcMdLVIJ2\nUlIrD/Eae+zXOBV6gEwySkaNUPH58fbmGbBP8YjjBM93vJtlpQt0ncZ1GXUJjKpERXWRbsZ4PvsE\nokPD68sh0yTBCq1iiZIQYJFONEPmsfLLOIw6AWWLTSWMWyrhpUAdO1JD50j+InFxnZzdT0HwkyG0\nHUZ1ayCnRy5yMbqXFvsqktDgsm0/JTxEyKAhMV0b4tnye3E004xQ4V3Cc4jtAhtqC13uRUqim0l1\nABUbyAKirGOjwWKggw1nlEW5nYCYxUOJAj6UZQ1Pqka23Y/fv8XjyvMcEs8jChpLQid+8nRXkuzK\nTBBeyeFu1BhdahDXShguDe9aicWOdiYd/VwVdjLin6THMU9DthFvbhDWssxEh0gIyxh2SEtRznOQ\nLEF2MI6CygYxNERGGGc/l2iMOCjO+PnGZ36cze4w/h2baLaKo/0AACAASURBVJJEPh0iPZ7gWP/r\nrNuiqF6Zlh0pcpMhtsbDMAckQPE2sGt1mgWF/GYYd2sB2d/APlhCq8toqzIkYb6lB9mrorWI6K+K\nyOd04h9fYzOVoH7TDa0QETI/FGD/XaztH81S0VWobEIFaVuk/fI0J+cEJlZGub7YSSmUINczSPSh\nFUY6b2yPm7teRbnWxLgBk3XI6bfchtw5T9KkRMJAlwLuYWjuUcgfcPEG9zG+uIOVVzo5tTiBf2EV\nfgcmxiAnTEOpCRURiuY4gn989YMokT7gl4ButreX/0IQhI9YjzEMwxAE4ftqZzb/7POIsbPIrjpG\ndAdFcR9K2yYb8Rz1UB6Zy4CBbqRYW+ihWAvg9zUJBTcIOuYQz1/GU1rFV7lA8aYfYxmEnI7k1ylW\n88yNl2nknUhSk6BrC1nJERU3WX89y0t0UMWBbjTZUbmGVy8ypTjIK5sYElxG5gIz6A2Z14qrKPYm\naTuclVepC1sYiFRwYquv4VSrzDhrxMQGXqPIRaGER12nvz7DlNPFgpZhvnIGz7UU4/IKXSwis0m0\nqdDamOUN6T4WmkPYK1fxLqk4tDVmv3aOMYeDHAEa1AhRw0eFImOUV5bZXBeo9epseW8iiGvMkaGI\nl0XqtLJCppplektDKriwNRqsTC7wZbefqpyAFYm1WIylsJcFBFqaQdr1Mk45S1xP49IqCEoTWWsh\n2wyybo8xJxpMUWCKGgIGaZo0mcRDiTZSyBjkbvbw0pefwPHIPMreBnXJQfXVm9xcEggOrJN0jlEQ\nC0TFDXwrXpozEao3nBgpEVGtoy8u01Bt5DIxmvE8uiKgVzxo63bYElAKTeY2VcSggS13mcYzNtRS\nk7K0jv7cEo6xBaRFjfXp6g+18H/4tX0GGL/1c/TW4++rlv7+XqoMnDzF9ZMAMi/hgIADoSETLduY\nLbjYIIC74kBWmzR1WDAkNpFwYENERkC8xU9vs9s16gTQaNc1nCroVYViwcllXMyU7aypEoZuh6QD\n/psGzAKf//v7zHfU39e1Tt96/M31gyiRg8BpwzAyAIIgfA24H1gTBKHFMIw1QRAS8P2bHeXhf0HP\nbx5ln3KZhVf7Of2Vt5G/piI/soH/6SRjvBcDgTp2jtZu0qEtE5RzdCiL9Knz7Cissc+xzjdVO19b\nfC8Nh4TDV8LrKmI4BTxKkYe0k8xs7uRGfje1rhN0u17FzYsMP51glj4W6SKoXUJFYULYiyooBIUt\nuhinjyEEAxLNGm6xhF8MkhYOoyNSxs0FDrJ1LUZ4Kccnj/0exzzTtDZXuWEL4p8pEr+Z4T8d+Tjt\nUZmP6i/z4pfg8NPdeAnTgZOWzQ0eHJ/nywP7OBnzktODjNRuMmgsEfHIvCw+SINefpJv4kCiQhs6\nIr56Dy01FzsbEyw5PJzx7vn/2XvzGEnS87zzF0dGZOR9H5VZ99ldfd/dM9PTc5FDcmYokUtRlExp\nvbbl3cVCEryAJViwgV3/syvLNrxeSytLwtqyJVGkKFLi8JrhHJyZnp6+7+q678qsvO8rIiNi/6iR\nvLCt5Rp0W2OxfkAigURWfkDgqSfy+/J934ckGSIU8X9oomvWON82PkGsn2fAXmHmK5fhr32eW8IF\nCnqMoKOC4DCxGWV+N0ypWeFnBn+bSWURp90jIg7wnZ1PcmP3YxyevEnMt4ubOAESWIi48VHHi4KO\nmzweWtS/NYb4G5+mI2r0UhJWUsRe/RK1i5/nyuAXEJIG0VCRp3kbuyeykUty/dtP0h10EHkmyzHl\nFrqtsGxM0lMUGmU/5koUEPF46yQTmxSFMLJkMKGusNqdJr+cpHhB5+TLVzmjXGFWfchrnU/wlaH3\n/v/+NzwGbZ8DDv8w6/+Q/GWtfQCaKvaaRbXs56F6iC2GkFoWQsvGNqBr+zCIIzLF3gbF++HftoAC\nFo+Q2UW16khbYJcFzNsSDbx0ui7smg29JHvfw//sfvmjdq3/l//oqz/IsOeBvy8IgsZeZc3zwDX2\nrvzPAv/7h89f/4s+oB9W0CWFha2DFOcS2PcEjB2FkakNXuKr3OE4ZYIEqVBz+pEwcdFijoMsSdNc\n06oU1SCCYjKVnGPbTlMXfDR7EjE5y7C6QUgqcdp3lSE2WaxM8Wr30xj9Huv2k9iCgJMusqSTrO4S\n3y5iqwJVv5+16ChuoYUg2NxwnGSMVTw0iZMjrWfo6i7e6z9N2rvF6bEbONUuYhe87Q7eYAMjKLM9\nniTrTqCKXRShR7q9w9lyGUkzEXo2/nIDf7VB3fCTlZLYkoDtsGniYonzrDNCEzfLTCBiUrf9lKww\nbkeLlLJDveOnL8l0cXKDU0ywzAt8jw5O1o1RXm98go97v8kh6QGa1WOdBPeMoxSKCT4ZeJVBxwZL\nTFKSQlgOiabgZk0YxUbggPGIiF6m2fMSsGvoi06W7h7k6JO3UJMd6nipECRIlQglujiRJ/tM/PIK\n1ZkIxpgTxdejGOxgpkx6YQlbd2BuxrndOsNs+B5HYnfJPJGm4fMQ07JMs0CmluZmOYQ7XmfEtUZo\n4A62LOB2NYkFMlzVz2IhcUS5i/9jdZaPTrPmnKAaCFAOBukjQeuHPr/8obX9o4kN/S40u+jNveON\nGr5/7z3OD58r/Lu8Gdh795/lwLjAlvaudov/122x/eFjn/8YP+gM+64gCL8L3GDvhP8W8C/Zu2V+\nWRCEv8GHpU9/0WeYkkS9GKSYG6BbdyEINlqkzYB/myP9e/QlB7tCgh4qt83jbJMGCVa2BijWw0iy\nSsCs4RZahFwFiuUo+aqHLgKjY6sMezdQ0Il7dkkJ27x/4yluqKeR2zvEjacZYIex7hodl4twZ4lD\nmQXwwG3xKN+PPslp8wZOu8v78nmSZIlSwEeNif4K/Y4TuyWRCmxzynsFZ62H3nNSswN0LSfb/jTr\njhF2qwm0bpvF0BT+1jUOlLepRX24Oy30qsrD3Vnm2gfYJcEoa1T6YYp6jLvdo1iagFPo8sHuOVze\nNoRg1RrDKXbJikl0l0K6v0OgU+emchJV1HGYfXKSn0I/Sr0ZpKV4aMkeOoabshmmZIRplPyEnBVG\nfOs46SGaJrZhY9oyeaJ00Thp3SQsF/F5agiSRTEfZ/72LMNH1nCFHex2k8haH7ejSYQiS/UpjKjK\n5P+8QlZoo6MQJ8f9UIFOsoLq7NFcC1JaTlAqJ/AfqZI+sonb08BERC30kXULve6k1gwxGNxg1L9C\n3JlDE9uEhDJxcrQVNx00DvAI1/kWdg8aJR81wc9Sf5IRaZ2Au/xDCf8/h7b3+Yvofvj40ane+C/F\nD6zDtm37V4Ff/fdeLrP3jeQHon/PSeegh5kzD6h8JszmyTEmovNshlL8/fo/5PPeLzPqWOMdLlJq\nh9FR0LwdNn+jQfn1HkLkIFJVQFQsOAbdmgZdAQZB+pSFY9jASZe7HONm/RS7X05guhUERSHYrNLs\n+Hlt8SVWD0+wEpmgfPZNbEnkoeMg88IMrzS/xbS1SNEfYVjcwE2LTYaQnRaWKdMtunioHSZcL/A/\nfe9foqcdvHX6SXyOGne2TvCle1+k8kEA11SD7k87eaH3DTYMH9/1PMtp13U2V0b51df/Ho1xjQMz\n9/l5/g9+v/IzvLrzY7RXXIRn87gcDQr/aIAjl+5w6CfvEJQrf555KGIxVltnNrfA7lCCmKNAoNVm\n0eMhqWX4+eSv8e32i9w0T+B1+egqMyhyD9dYnRXnCDYWcXYpriRgU8QVbqOpbSpCgCuO89Tibg6H\nb7KgTtE66iE+sk0lEmCzOMzi/EE+f/jfMhWdp0iEy9cuUtFDnHjhGj3Hv5vd0lcbtJUFHqwfo/09\nD1wGdLgtn2A1PEzhHyfpKypbR/qsbM5gTgp4Pl7hrOsKuqHwJ51Pc871ARFHkUG2+DRfR0fFRYsN\nhpEdBuej7/CoOUupGkMO9nlJ/Aa/9Z+u9/+s2t5nn//SPPZOx+hwnvOj32MitEAj4mUnOkjIX2Rt\nd4y526fIHU2AW2C+cojKVhSHU6d3RKUb89KdCUHKAyvS3u6qCDRBcfcIH8nTElzcun+W5WiN3WKC\n7FqSqcOPiMfylFdv4FfDrBfHKGci7E7GueU8yXZpGFsVaHs0RMVEV2RalkZb0MgRw7QkbhvHacg+\nQs4KidAOYVeBtL1DJFRi2TfGvDJNlAKbK8NkvpfCN1bB9Mms3JgmJh4hFI7zUJohLW2RU2LMOWbR\nxBrZtQG+9eorrBwdRxtpMdhfZ8S/iiL1uHLBg3u0wQAZBoUtbvZP8qh/gLSyTVTN0wxobIspNoUh\n3Gqbu9IhsnoSo6axZE9hqgIpyY1PbJMWtul4NEpCiFo1QPVhiMa9AD69jtQ3CVHGTxVBhA1hmAxJ\n6vgQvDaat0ORMIZLIZgsoTn3tqdNPFSCARp9D7LY5xwfEKWAhya64SNXG6BbdKENtPF/vELUzhOc\nKSGoFqVEko6qIcUNXL4m6aFNRnzLeKQmG+YwVTFAQ/CwrE+x0pgh5sniV6s4MGjgxRAdtEQ3orOP\n2+wgCBbqD1WFvc8+/3Xy2A175MwqF08uE6SCYuv0NYmiEKVV96KsmWQmUzQFHys7M7g2WriDNVS7\nh+PiMOLBBFZU2tusLrB3/OUEZbBH/OMZyrsRNldH8Yt19FUFZb3H6c9+wIHUQ+7//hw19znMnoxd\nhn5OYbU+wXubz+GI6sTiWWZ899jREtRMD6vdcRoOL21L4271GG3BzbiySiyS4YD0iEPGA9TZLiU1\nxLI5TlvUqOSCCA8tPD9Ww/AoFG8muOs4Qit0EqstklWTNH0epFkDU5RZmpvm4ZeOE4/uMHpxkamh\nBSZZAktk8bNTyHofqyQR9RcQWxa1eoBYLI/qabPhSbPeH2KHNBvuQQpEqbZCNCtBOl6ZhJRBpUuC\nXUJCmb4ks8YoK81hqrdj2BURX6xGVQgw0l0jbuToupy0Wy4WajMMxrfwSTVk+nRxEghUOOK/S5AS\nHdNJTk9gjEpIoo4lCpzgFiOsc5/D1Pt+su0UqtkjcLpIfGSHMWONASmD3RNYePowLdWNa7hOKrTB\nKeUaZ7jKDmlsBBLqLoII8+2DXM4/w1H5OuPqIgGqiIZNwKqxqowS0CoMsIObNrqp/gDl7bPPXz0e\nu2FPeea5xU/ipsV58wpP9t/jtnKCnZE1DoVvIwUN2nUNsW9x5MQt4uEMPVHBP1WiHXTSXA9im+Je\nW4MEaGCMOigoYdTxLsdTV/mc849YS4xy5+RRUpFtMqS4jpsgUQTdxi6J5L80gB0C4aBNPLTDQHQL\nj9DiDZ6n1IiSXRoiObSF5DBoPQgyt3GcLWUM70sVkoEsXVmlHtFY7I5zo3qaH/d9Dc9wA+tJicLa\nALZfwB4UaW54WalMUFuMMDy9hTLUJfTFHNU3w4hVi6lfm8M3UcVPDROJIhHaTS+5u2k2FyZ41DnM\n8OeW2SkM0n3kY+XSBN5YAwcGh6X7SFiUCHOUuyTcOZxDPS5L52nIXkxBwksDNy00OrTRyIdjKC82\nUdCx3Cbf9H+S6GKJAxsr/M75z3J19wKORZi9MMeIcxUXbWr4GbNWedZ8E03s8E7tEv/nxmeQ010i\nvhw9QaVAlCAVIhSJOl0og7cJxis0nW6qvSDvrz2NJ1jHGWxRC/kJu4sMhlbxynXi7HKEe4yzyriw\nwoxjng1hmJIZgzZk+wkEDAbZ5r/JfJ3J7jL3xmZoOjxodJlhnuHazuOW7j77fOR47IZtOyBPFIsE\nPqGOT6qzLIzTdLsJuMtEyRPTCiSSOdzROrW8n+WvT2M8paAEewgy2F6Qhw1c0Sa9pobgspFFExMH\nPdGFrOqYeYn6TpC6x8+uEidrabSNFHbIJn1ineLbcToLLoSSTXQkT2I0i5MuC+sHyVWTuL1NUC1s\nWcAbqzFkbzIlLTLoWNubKy2UqCk+sG3CQolNcZBMNAWHbeSAjsffwBeoIeV2mVDuI4REnEqHcj9I\nt+HCMJxYrj61cR8efx0VHRWdIFW0po55U6ZUjFJTAtRe9dF1a/RllTcuf5zN8WFCR4psCMPEjALP\n9t4h5Czgl6t4XE0ETEqEybJDo3GO5c4MqtWj43PjqzUovxvFCKrUw0Hq7wdZck5xJH4ft6OB31tF\nS7aIqAUUdKr4GWKLkFBmXRhlpzXIdf0MPZ+Di9objMortHDTwk2GAQwcuKQWPtc6ZVeYJBnG9RUW\nvQdoqxo9WUWLNxEkA9MSOW9dYZJl8mKcNi6qQgDDUjh+5x6H2484l7xGRo3RwI2Bg4hc4rD0kFC7\nxKJrnIojAIDk+KsxkH6fff5TeOyGXRSjtG03TcHNDekkW2KamhFER8Eh63jNFgeccwyPrPMeT/HO\n2jOs/PY0scQOnidaVH02BEGWDXzHy3RWPVATCIpl8vUB1isTXJfOsrIwycr1KSYGF2n5NEy7QV6P\nEkxWGE0uYhdE6u8FcNw0GHppkwF26KBhrjlwtA1mXniAW2liIaEe7nDx8Dtc4vuMsoqNQAsPFYIE\n1CrH1Vvc4iQ7vjS+iTruZJWob5dBdRP76grP+yuE/BUWjSnWt0ap3Iti+UUIOFgvjeOUukT8RUTJ\nIi1sI/dMwlsl2gE3Zkyi8M0k9ikBnrd57Uuf5Hb5BANH1uih8mnjm/wPjd9iU05Qk71YiEyzQNty\nYRs55qqDvFV5DrMjMzt8B3+uiv0VB1ZKxBwWEe7b5D8eZ+fpOLPaA/LuGLmBKJLQJ0+UTYY4zANa\ngptvSC9zrfUEXUFjdHyB53idEda5yUk6aKwxSgcNq7+E1uqyKo6TlnY4yU1cgTab8iBFIYoS6dHp\naEgNixfc38OpdHhbuMSukdgzbMHBSze/y0nzJuasxavqp7jKGTKk6AclDE0h2q2w4rCpOgJImARd\nFSD7uOW7zz4fKR67YWesJM3+AHE5hy6oLBgz5B8N0JNUxKTOUvkgz2pv8rfSv45Gh/CxPFP/5AEn\nxm/SE538sTqI2ZTQcyrF3SRT048YOb6KpBl0il7Wykleb3ySjseF+axMPhBjWFjjqHiHrPIMFSFI\nVkxy4sVrjJ5dI9XZITW+jY6DBaaJHN3FZdY5ID/6sCmlhp8aBaK8w0Uu88SHEV57haIODNJsUyXI\ncGADTdR57+7TbPlG6Z50MmX3aeHmA86xsDnLVnUY65CJ6mkhdqDz0MNWeYz2kJdSMsxB+SFHE3d5\n5ef+iJycoNiP8Z5wicagGzneQ590ISX6+KlzlLuMq4vcCh1CdXRYYZxv8DICNo2qn3vrCyj2IOFI\njuJqAtG0kEd0pF/qcsx3hxP+WygNnQtrH3D4jx9y/cVjxGM5nub7rAmjCFiMsUqMPNukWGeEvh+G\nWeYTfJt3eIq3uMQIG5QI00UlQJXV7Qkq332RiifIG7EXuSFfoHndTXdIxXO0zkv+P+FU6zYTxTUS\n2hYlKUTQrPDao0/iV2p8YebfILyoky9EGLidQzvQYyyxxgXeJ6PG+XXH36Rlu+lIKhYiWZIkO3n2\nftjYZ58fHR67YeeaCbrbMZyJHn1bplKKUFsMYVgyckPH49+m41dZZ2SvaSWU4/5ZixAllF6f8dAi\nrWE3hseBIThIxbaJK1kWbx2gkfOjtxQyWhq8oIa67EoJXDQxBYm4nMNLA5fQZii1zmBqgwhF6njp\noRKmRDq0RYnwn895jvRKzJUOse4dJuNIUs8GCFEhQgE5b2IKIl2Pk92BGLLDxEOblGebiNuBTA8T\nma3eENfr58hVUjQNDwRMkuEMAaNKp+Kl4g/SUlzsCnHucwSvs8GF8cvsignW9VGSF7KseYZZCY6R\nnR3ECoKBgw4aJSnMqjRCG40iEfzUqBAk146zWezie5TAG6oxHl4g5tpFcFoIQzAQyHAiuBeNNtNc\nIFCsU7ZDKOhM9pa4cfssgs9idHadHiouOswKD2jLLly0iJPj+61n2GyPUOgsUvP4kN0608oCfaVF\n3ytj2CpZI022ZMHrOqEny8RO7pIQdgkoFRwenbIcoi/IpIQMiksnJJY5pd+mNuClK6qIO2D3RWr4\nqeJnWZqkJvlJkkXCRPpw4OZ96TB79YP77POjw2M37Gbdj7SiUPEH6Rku6jthxKyF3LZwtGxOPn+d\ndGyDBxximgVClKnhp4mHpJrhaOwGtYifhu2lJbqJCDnYFHj42jGqRgBHSKcfcewNWBclcu0EbcUJ\n1gOO2TUmhCX81HGgU8NPCzd3OYpMn/P2FeJ2jo6gMS/McJKbdDsa//fqz9FLS8hundKDBIIAMn3M\nGxJ9wUE/LeJ8qoHlkVC6Nj9++MvEXFlq+Fky3czXZlnZmdmrFxeAtki6m2EisED/gsSaMErWGqDb\n1/iAc5iCxN81/hEuuUPPqfL5Q1/iqn2G3+t/kfKBELogU26HuKqcpSIFEAWL2xwnRJmX+QZXOEfe\nSCB0LGrXQmiJDke+cBm3p0m5HkUoyTgUE3ewhZ8axKBsBNmShnCZTVLNHbrfdNMfkejOOskTI0GW\nV/jTvexJVAwcdGsetndHWS9MIA7qJAa2STu28Q5UCT21gL6r0jY8mHkb60Gb5MF1DgTmMJGY88/w\nwHeQmJAnzTZRKc/w5AopfZdYq4zhdCCINrZfQFdUFpjmLZ7BgcEEy0yzQJ+9jk8nHa5op4H/63HL\nd599PlI8dsN+LvwaJ45u4PK0uGsf5cr0BVKxHbqmk7IaYiY6x1Hu4KPOmzxLliQv8w3yxMgwgEqP\n7dwI2W4SOdHDozYIRmuEPpdj1F5E63W5vXiajl9FTvTovOOh53NBKcn1wjlG3KvMeObZIk2cve3/\nB5xj2ZhgvjVDUw8Qlks8HXiDVXGMntvJywe/yvXGWZaq06SObXBJeZvj3GZtcpTL7Se5zxFORq9j\naA4yVopldYwtBuj1VdbWO/QXDiGPdDBzKnZbAgnm3j9K3h0ndjFDWt0mXinw9rUXGJ+4wYWJyzQV\nN1khwSJTLDLFfGOWB+XjtHp+eAQ7DzSkl3sIkzYeV4sEu3hpcI8j7JKkG1YQJw3sM32qjgDXemcZ\nUdZwudokJzaYd07ym/xtNDrQd9Au+9i4kmZ6Yo6j47eI/nQWl6tNjNyHg5+iNPBxzvEBPhoMscmx\n0A3aDpVHroNIfgOno4tLaBOgyrhyh+nYIgv2FMvyJNWf85M9MML9vo1LanPevMKYucbvOX6Kt8VL\nxMmxxiglOcJvuv4Gz66/zUh/ncpBN35PmTFW2WCYk9xkhHVauPDQxETibS4R4ofrdNxnn/8aeeyG\nrTtUdJfCAekhFSnAQ/UgiWCGSjVIvhCjYgXZIcUucW4ZJ9BReM7xBstMsNkZxlXo0TI8uJU2MWGH\ndt1L0wgQGiswIGdwtnpk9BSFQpTuHRWjrWK7BbAUZMFNVQyQtZOs1iYpNuL42m22zBF2lEF0v4Sl\nq1j23qCnBX0apW/wt5TfwVJkdElhOj5H0rGN3pVp11zIfoOgp4RZdeDptxgNLZPNpGkZHgQFnPZl\nhtwPIWAy1z9KoZUAA0qbEbpOBesJizTbJMRdpp2P8Mk1suUBtt8dZtU9ztLQJJWEn3x7gFIjtjf7\npgbGhoLw3T47mxbirMCgc4uYJ0fAV6aLE7erRTy6S3e6SL3rJ9NMQ18k5Crh8PXI21F2+kkGpW1y\nriTZUJqIWSIrJjE6p6hshuh6NNZCk/i0BoJss02aSXGREBXq+JhwLtKSXKzLQ/iUGmllmwF2aFIm\nJubJuAYQTBMx0kd7TmfAv8sQmxSIUhCipIVt1hmhgRcXbTQ6mKLIkjLGlGOJlqKxEJogJ8QpEMVH\njQhFwpSwEYhSpIafbQZpN70/UHv77PNXjcdu2O/0nuZe6SV+If5r6JKCgI0NdHY87H4wxPsvPMFN\n93GKdpRCO0qSLEV/hBZuStUoC7eSjB9eYDZ1h0PCA97a+BhL1UnOHn4Xj9zEdgsMnlpF/x0HtS+P\nwy/aSId1pO0uyeAOqqPHljlEcSvB+to093dOYXcFpMEe6nNNepZAQQrxhvU8hXaEw805Thl36YQ0\nZH+HQzzkA/sc/7r+18m/mSIymSN+JsO9a8eZiixwzv0e67dnyDaG0ZJtno3f4wsnbqPbCr8h/QIF\nO/HnoXWGoFA2QhSsKJFggU8886csMM2Xbv4US790kO6QC+EzJuKlHjhFJPvDGKwYMGFjfUmmFEtQ\n+ukEdxJnmBl+yCd8f4KESVQu0FeXqMVWWa5P0dnys22PUvTESQ5v0OsrOPp9plyLCGGLqtvHQf8d\nylaId9YuYvyqB2tE5t4vtxgYyOCXy5QIE8eHgUKOOCe4hSDbvOW7xIi4zqzwkAmWKVAB4Kp1jqye\noC/IBKYKPCN9j/Nc4bf5m3wgnaMnqdTxEabEQeYIUqGHilPoMjc2xRaDfJNP7U0rpM4oq2RJ/nmY\nQpptFHQELK4Wzj9u6e6zz0eOx27YSXWbscht7jkOodHhCS4zxiqNwYeMutbwROps1od5sHuS3m0V\nvAWUF3Vk0SAczDN+epl8OcGNGxdYUmZx+HocnrzFAXWOLAk2GMZJD3VWh5cBl4DPquFR88xKD7ER\nyFgp5JpJxJ1j6mNz1E0/AVeFo+5bvNF8kaXCNNk7Q4TH8nR9Kr9Q+Gd0NRnR30PGZD07Tmk5Tt9y\nUOmHaHdUuqMO1sxRmltezIM2Z5V3OOW8SW6rzQJHWGaCXRJ7V9gDHIH+gkTjf3RR/mKQtRfHuMcR\nqgSoEMBEwjVTx/+xMuFogbSUIRHKoaPgj9XwpJp8tfuTrPbGQQIhaFD1e7jDMSpmkFbXS61eZULv\n8aznDXzDTe6aR6nIAU5It5gvHWSlOsW7/ks0dS9mX6Pu8aMqPSYGlun+A42qHqXaCPPN4isM91dJ\n+zfIkSBKgSPco42LvBAlJJbwCzUMHMxxkGUUNqtn2L2bJpAqczh9jx+vfgPJabDqHsVJl0mWeJL3\n0Ogwzwxv8gyjrGMiscA0CjoVghjIpMiQJEuMHBGK2XCwSwAAGj9JREFUNPHwh/wEI2wQpMIM87Sd\nAeYft3j32ecjxuM3bDnLYdddmngJU2KUNYbYpOQL0/WpCNhksmma637IgyTYeGiSJAuSQN+l0tz1\nsbsaI7PkJn0+j+9YjVxhgM2NNJv5NMFIE0N1oD3ZpCeqoAtYDZnmkh/ZY6DEdQTVwu+pcmD8ASYy\nYUrM8pA7u2d5tKbSsFSSI9v0NYnXtWcZlVeY4SHCn83jlYEgdHQXnTUnNMHSREyXSGigREAtY/Vs\ndmtJ1MwESlJnJL6K3RPYejBCYKJMcLxA6OouVtXBdnEIIWgSkYrEg3mkjwm0T2lIYZOAq4ZrrQWr\nIMzY+GNVhkPrJJ/fprAZodH2I6p9moKbpcwMzaoH2xYRLAdhocS0Mk9UKZDtx2jZThRBJy3tYMkO\nykIAWeqjCRUqRhBNbuP2tRh9eo2d0iCVbJCMMICbOuMsYuCgSoAt0hgotPCQFLKk2Mb94XCmrYaO\nsX2Qju4iLW4Ql3eRMTA+rOsIUsaBQcUM0Sr56Do0+kEZhR7VbojFxgFoga2CO9lCsGxadQ+72w56\nfjdNn5vrzjOsd8dJWRl8vgpJ986+Ye/zI8djN+w4eY7SwEkXjQ5uWkQpUCVAhgFctOi2nLANpEEZ\n0QkLJY7SQWwJfHX1C3T7GlTq8C9W2CkPkFEvcaX9NPbvtrBf19m6OInvp2oEX85RqkSo7AaorA2R\n/fonSExuM/Zji5CycUodEuwyzCZeGhg44KENG8BTYLsFBM1CG20wLi1yhmsEqVBOhlj2jZN3pNA3\nnHBFgmUYOr/JufPvURJCrLQneK3wcaz5ryLfSPJ3Xvnf2Dw+yPu1p/jSP/kZxv7uEqc/eYXTz1/j\nSw9+hgdzR3jm9Hd5RnuT8GiJP/inP8n17Qvk1waIThW4860hNn5jHH4FDl26w7nBdwmez5PSNpj/\nzmHEvkmv5mRnPow9B4lYhrh3mUGth4vWn99o2rhYYpJTkZuci1zmA85hoGCaEnfrR7CECGnPNh/j\nNfzuGnMDM8Q8u4SVAiIWXhrskOKrfIaT3GKADCNscIBHmEjc5RiF7TrtuSHcz1fxBOqUxBD/MPTL\nnBeu8BTv0sbFNmnu6sf44N5FhgNrfOrU13HSZac2zPz8EViDWDTLgU/eYd0Y5f7aUXpf8cEREGZN\nhHiPXC7Fij7D0OwyR313Hrd099nnI8djN2wvdVREKgQpEcaBwQ4pRCwu2u/wtcrneGAcgzQwD2U9\nxLWjZwgIVTyuOs+PfJu72ZNs9uPQj2F/x4m9Y8K0jPt8H+3lBkbcwmw6qP5eDMPphLAELrBWRCqX\nNRa/E6L1GQXHiT4eWjxklhLhvbit9eG9sfUG5KwUhqwyFlghkxnkDytfRAn1kIIGCTVLK+3GKgdR\nRYNzn3oP53SLOeEALdz0FYmp8AK5ySI7Uyf4p5u/RGvNRbPuYeCXNqgfcXPVPsuSNclia4ZeQ6Fg\nRakSQLJMlluTFI0oPVNlIz/OwbMPeXHoW4SOVOiGFLJmnPXtCbLNQRgSMGsqomQiT7UxsyoNwYvV\nH2DePEBNChCkQlLK4rANCkKU642z9Jt7M0Di3gxD7lU+6f4Wa9YouW6cmJIn4ijScrm51zxOXk6S\n9GUwkKn0QpRrCW7Nn2W+3AZVwHlYJ5rOIdPnQvIyP3b6FoKnz5xwkAwD/ITwFY5wlxgFlpgkYw+w\nKQ8TPFggouRom27e37nI/JtDCF9Z4cAX8wwdzRMW8mz3BunJTswpEe9EDU+6hqq1qDyMYxVktMk2\nhvOxS3effT5yPHbV+6kh4SXDAIVKjG7ZheUXOOB+xHH1FqVehGwpuRfU2oKqHuR2+RTj3kWSaoaZ\n8EM2l0fY0geQL7qx1h2Y8zZoIEZFpKCMKdj0sgr6ioY23UIbbNP3lOmYXcyqSE+SsSoCzU0vq+uT\nPArPkFH3mlpqzRCS1EdVO7TbbtiB6G6OTH2QXH8At7fOuLVEiDwO20AQbGR3n9SxLWpRH2udcYJK\nCUfXgLJIJFBAihm8sfoxeAQ+f4X051ZpSy62jEEWetP4tBYRCmT7SR70D+Fv1di6M4ylCvgDVerd\nIPaYQPLcNoNskSPOuj5MMRej1gpCGKyeA4ep40sXqccie12NtT65dpIqQcLuIi6zg2RZiIpNwQrT\nNP0o6LisNmGhxLC6SbPrYa03Sk32Myhv8ZTwLnIbWpYbwbbZrQ6w2x1AxKbe81MphGlXPIwPLKGn\nZXQUvL42Q8O7+MUaK9Y4VctPStxGEiw2GKaBj3IjTLY+wHBknT4SS6VpMu0UfUskIW8wMbROKNWj\navqRBBPN36F7QOTA4APGgouIWNx3n6DZ9HLWuIHelx63dPfZ5yPHYzfsEBUEUqwwzs3Fs2y8OwHH\n4dmp10ilt9CdAsKSgf2PVPhFqE8GmF84gjrZwxVr46EFj0Du2Hj/mU7nLZXOOwrI0PxDP60lH3YM\nOCLgeFIn8dw2IwOrtOYesj5ewjwtMPS5Git3+6y+PsnWlWHMpySshIRdE7B9AtorLeKf3aaUjdOY\nC3L7+hmsoxKuM00mBuaJq1loihiLLoy6ihHts+kYpNoOUatGOB29TmPLxweXn+JE+7dJ9ueYax2H\nLpiaRBcNRdDR6FDr+Tk8dYeoWOBbzU+xK8VRCzq134swdHGd+Gcz3M+dZF6YoYnKCOu4aWHZAjSF\nvSCPDxOZ3I42Q64t1gZcBM0KE+0HZAuf4FHvKJ6xMt2WhtrXGQ8vMuhbR/X2iFEgJJTw0qCLk5bl\npmF4ece+yBNc5qx4lbPBq2RI8YF1jhsLF8gKSRKnN3GF23SSXla/NsVCf4oCATq4WOACWzzBU7zL\nbf0Yq/0xrrrOkhdirDPCMJt0Nj20HgbpXcqxbEyTXxngyQNvcfin8jQ/6yLlqlCwYrzTe5qIs0gq\nuUkmMMDLzq/zIt+mQog/OKFT6Mb5+fav853uC49buvvs85HjsRv2TU5gMkOeGC3DTbfhhDrcu36M\n7qtO8s8kUEZ19BcUgkeKEIPKdoSNy+PUHCHmpppsp4ewU2AFROwRAanfRxtqYAgqvS0XBIAEWCmR\nhtPDWm+MdnOchhLAut9j60GQzrQD0y1hTTg5ePgeykiXTX2I5o0AOgqlXgTCFs6JJt2cGxsRuyxg\npGQsQURs2NhvCyAK6KMqC187hDEiYR0zWZVGiMULvHj+G2gfrBPs5GAXqIPq6RG18+QWBqjUYpgx\nJzvONPWGn+6bHswBCalv0d92UHwnRltw0zuo0uspZKrD+FINVFePoFzmuenvsqOnWVIm8dBgRFvj\nuHCDd0cNMnfCzP+bAZpmmKGTG/y3wm+x6hqjYXk5L77PjpBiUZhig0GClJn68AfFnqJiiwJ1yccb\nnRe43T7NAe8DDEVmUZzEGBGQLJ2G4cHlaCPHdDgDRX+ERHebn1F/ly8LFj5hglkeIDpMrJ7MrQdn\nscIgxi0WiwcpE0YdbXPB+R6S22JuYpa+TyQhFXhBfIslYZSm4EFT2njEBi6hg9dVxxRFHnGQBxzi\nkXGAnunkffcZHEr3cUt3n30+cjx2w76XP4bVO4ThcODAgA9T67dzQ+ysD6LN1hEDwDGQNR16gAXF\nezGKegw0oA0OVw+wkQd0RKeNI6xjTjpg3ASxgxgUEIZEuqpKs+KjXUyB3w1Zgc7dKARV1Nku3nSd\n0UPLKOkuDVz0aw46NTd9U8ETquFR67QaBt2ehoiJgE2r6MFYVulnZYLJMj53jdyDJIYl4pxsInos\nfKEaI6E12nfruIw21MAR0AnEKowJaxSLA1CVmIov0dVdFEpxjHUnZknG0IE81LJBao0gRG1wC9Sa\nIYpqHC3awaW1GEmtIOs6W50Ug64Nhhxr+KkxEl2h6RC4t5LCvhdiMFwmnc7g99YwZJkDPKKaCVIt\nh1jzTZAI5tC9Ci7apOQdWrKb+xxm0xrikX6YHSOJ2O9T7oRp111YFYH2wwBuuYHm7TA2u4xfK3Gi\nfZsfL/8pN3uzuIV1plhCkKAgxrnWGkByG7isDpneMA23B0+4gSoYeJU66dQGDTwouk7IrNAyD1Ft\nBhEyIv2kA7PfQF3YZtk1yFZkmJWBMTJWCoets+gcJy1tP27p7rPPR47Hbtjbl4fofu48T0bepKe4\nWBOn4FXABHtSoFP17pV0FQVKlxMQAjshQJU989aBPwaxZ+E80kMabtFXVCqvRTEsBU724I/WkM8o\naJMBFK2LvSbtVX6MA0MaRFSIioQGdjh08jaa2vpwJkUX98kaqtXG56zjkRooTh3jzC65bgLDkgmq\nZXa/n2bt7UmMWYUnTn2f05Mf8BV+iq36EPIdkRfPvwaaxftcIMm7yIIGEnierZIaW+eofIfl2AE0\nf5f/PvHP+Xrus7xVeQFzTITb7CXq7AAdwAB2BQiCUVNYdsxQM/3URz20cZOtptlZG2VyaolqMMgf\n81lOcYNDUys8eCWIWXUz97VZ/s7gP+fzo/+WU/6rXOc0b73+PB+8+STGKQfXn7RoHXdzlqtYiPSR\niZHD7WrRUt2sd0ap5MMYay6s74rYNwXsVYGtfpTpZx/yhX/xdc66rzGbeUT87QreYpMIeVR6OOmQ\ncGe5eOINstIAGSlJMFVA0HWaHQ+/V/nZvci16BqHeEDV4eNXfP+ATWOI/FySxr8OUf3pIGJjm94v\nlrk7eZHAxwKM/ncLeL11PHaTmJhHR3nc0t1nn48cj92wxWELBJNHrx2idjmEfL9P8vktHKM9uhGN\nciiGLYP3+SpxMYfgtMn5YhiqQq/mpOvwYNcE+lsOGq8FUc+3sdttzO/OY4cTkAzDcBzTluguqRgJ\nFcsrIo91Cb+whdF2Um5EkBI6gXSJSfcix/p3afbddGSNhLaLizYRocgYq9iCwNvOSwzKm8TtHGGx\nzLWJc+SVGEPRTfzJMplAEvV4C/dSk+6mxrtbz2D1BTadg4j9ASw9CRVQ5B5VIcR3d15i2xrCdEh8\ns/4KbafG1MhDunEnpXaU+mZwL7d7BrgIRIE62NsChqRgR0VEw2b+4SF0U2EkvUzFGaCBG4B788ep\nZsNY6j04LRJwVjgVu8qWnWajlcbUJDa9w3RjGgTBpzVIsIuNwHp3lLu9Y7jdTU50bnO2eoMv+z/D\nzd4Zslt+oid20Q63sKsCpZZGfmiQy1zg5NJtktt5ZKXPoLTF2f73GWxm2VUH6HadPHrvMLUhH+JR\ngwl5iZ1emrneLL2uik+podFhkyGK1SgrG9O0rrnplTT6RxwYQQW8EXo/cYJuLkl/3on9O9A7odI7\nUGY1NM4R+e7jlu4++3zkeOyGLRn30aQLrF6bpPueC7XaJfkr22gXmtTMAM11H6JskRjeJsUOhu6g\n3nQjjvSRWn2cnR7tmAezKiNmoF9xYFoCdraMFNSQh/xIT7tQ4zpypYnhk7CDFnTv4D18hnbGhiUQ\nXCZhR5ET+h2e0t9lx0zxHfGTDDvXiTlyKOhMsEwfmRucIt7MMdjexnaKyG4DdaxD1Jej1XOzvZ3G\nl6zSbTjJbg6z3J5Ea3ZwCV1yc2X85xVS3m0UuUWxE+XBzklsWQAFvl1+iQPxewzFVgCBQiPJbi1F\nsRTBPiMgPGdjdBXsjLhXm+4Fe0vE6KnUNoOoiS6J1BYt3Cj0GGeF97cusZ0fRsj8PtJP6oRCBc7G\n3+P7nUvcNo7h12pUoyHEaRPneAdfoIaLFjX8FMwYxV6UpuIm0inxSv1V1gODVJQwfUXh1LlrBAeL\nNGQPpWaYXkOll9EwtxWoCqAJbK01ebrfY7sywo4/TU5PsLg6g+kSGGSNo9xFo8eifQBDB8HYqxHf\nIUW+m6ReCNB/JCNqFp6X6jgSbTRZx/fXofp+l9odlcy1IVyBFt7hBmvBUab/0ttmCj+Ca/+orfuX\nvfZ/yGM3bGt1Hk1oI8oWRECI2DhcBg76iLaF0LBxKy3SbJEjQb6YpHBzAOuKSNhX4PDPXWXhlVnq\nJT8zz96n4Iuwm4vBp0/hOtzBf3YHv1FnQN4hrBbJOeI0JQ/ziw8or8apfz0AfyBgvuJk4FKRz5x8\nFbfZ4lH7KNerTzA4to0S0bnBKW5xAgcGCjo3b53jTx4OY49Be8NNN69y5VQYe0NA22jz1N9+E9XX\npzIS48XJbzIRWsAhGvyrxXmmhucZ+dwq77susFid3jvesQEV8AnU+366aBziPmcOXKeSDvLHH/sM\nuk9B1XUKvzmAvuwEEUhD8bsxug81Tv+9K4jH+mwyyCwPOcAjDvCIDc8ku0oCu3oX71QRRWrTEl0E\nXBVS9g410U/fI6Mmu4xMLNMOKlzhPA76xLUczzle593uk1TkAELCZFRd5fTQVVKRTX7W+H2irQK3\n/YdIu7aJZYsEvt3CPm9RHAqSuFrk/YUQS/3/lc3GBLZmIUQM1L/WBHWva/VZ601CzjI3Aicp5FJU\nu35WGCdAlWh0F+m8Tn3Kjyr2SEV36MsSE8Iyn3F/jTciz/HumUus3Z9k7MASI6llOrKTDzgL/M7j\nlu//Bz+KJvKjtu5f9tr/IY/dsJ1Wl+J2EqOiEJveZeDEFuVqBGXNi2u4wUB8C6OksHp5mmo0SGNB\nRv9Xu6BFME9JWJqAPQw9SWV3OYU82iPkr5E7NIguO2iuSfQ9Tvq2SqkRp77ipZdR0JdUrKoD8ZSO\nU+6SOLKLPWbyqvtFTts3cKl1zjnf44h2B40WOg4ilHBgsMwEOw/i5L4Xgucd8KALtxs07+lQdSMJ\nKmqjh+roIeVMUge3mFXvE7DqfKtbYDCX4aveHydvxjB2FezL7M0TcQMOqC2H2EqP4D7Roq9t0ldk\nbM1mSFlnsrdM7tIAnaMuOpLGqneK5oAbfVAiPFrAdtmsWKOsZqeomBGWA5NMDCzgLdZ4syTRveZB\nitukJ3cY/n/aO5fYOq46Dn+/+/T1vbEd145fcWLLjfNo6tCoVQOUhpakChVkU6FS1KorxAKJwgJI\nu2eDhACpYsMCQQVRRUEhkRDEfQKtVOI2MUnsxEmTxnb8iONHYju27/X1n8VMRUBZsMjMeOrzSSN5\nzkjzm3P8+X+vz5k7N3WFLnrpZwfl5jRUi9mqSpKpZaq5QScD1CUmSabL1Ns492YuMaIGtpUHqEgW\nOVuzjRsLBa5c3szrv9/HI4+9Ta72FHW7pzi/aQuzhQLtXYMsZRdYziRZakjSnB9lU+pjKu5Z4AY1\nzJcL/OnmU1z6ZyuzbydYnhhlpT3L9KP1PHDfKRpqx1goVFCuSDFPnunUetZxk9zUIt0DB6hpm+Lp\nlsNkl6D56jA1H02xUJcjU7fEb4OW1+FYZQResLMrRSZGmmAG6vaM0/nVPt75636SlNnSPklj0zDj\n0y30vf8Zbw73zHU4OgwHcyxvSDGXKFCqSrOYrORKTwdtlRdYv2Oa683NLF7OsTSUg0YYW97o3Ur3\nOvDhCgxWkFg0Mo/fIvWlZTZlL1FMJniVp6hmknom2Msb7OQ0c+RJU6KVIVIs83e+wI3BPJwqwa4U\nXFmEnmnomYNUPXQU0JKhBUNDRn5xjnomaLYx1i/NcM/VGf7W9EXS+QWYSMAJoAnv9sMSzFkVKx0J\nkjtKlCrSZChSIk0LIzxY1cPEk/Ve8SrVMj7azPxKBYl8kXz1HGUSYOL86Hbmi3lIlnhpw4+49+ZF\nuq+luPVeFYmdCTa2D9ORukiRLFXMUtlwC2H8g8+TpcgWLvAEx0lS5rrq2Jk9Q5kEo9bIzrlzrFuZ\nZyazjo9y7fSMPcyR33wNNq+Q2b9E+tEi/Wxlgjrmu3KUs71syIyz2JBlG/108S9qmOZj2vmg/BCv\n3vwGk2/m4cdTwCA8VMtCqpXNTYPcX9vLCglyqQWGaOUd9tLCCJMzGzh84hm+VfkyB7ceY1d9P5l3\ni9ALdAJbgzbX4Vh9yMyCO7kU3MkdDsDMFHam89oRBndyO9CC7XA4HI67RyLqC3A4HA7H/4cr2A6H\nwxETXMF2OByOmBBYwZZ0QNI5SRck/TDAnFZJb0k6K+mMpO/47bWSuiUNSDouqSbAa0hKOinpWFjZ\nkmokvSapX1KfpIfD6rOkF/3xPi3pd5KyYY531KwVt6Pw2s+JxO04eB1IwZaUBF4GDgA7gGckbQ8i\nC+/pG98zs/uAPcC3/axDQLeZdQJv+PtB8QLQB598n1go2T8H/mxm24Eu4FwYuZLagG8Cu83sfiAJ\nfD2M7NXAGnM7Cq8hArdj47WZ3fUN+Czwl9v2DwGHgsi6Q/YRYB/eL7nBb2sEzgWUtxHv7u/HgGN+\nW6DZQDVw6Q7tgfcZqAXOA+vx7uM/BuwPa7yj3taK21F47Z83Erfj4nVQUyItwNBt+8N+W6D4r5IP\nAO/jDfK4f2gcaAgo9qfA9/Ee3/QJQWe3AxOSfiXpQ0m/lJQPIRczmwJ+AgwCI8CMmXWHkb1KWCtu\nR+E1ROR2XLwOqmCHfnO3pALwB+AFM5v9r4vxXh7v+jVJ+gpwzcxOAnf8AEdA2SlgN/ALM9sNzPM/\n/6oF2OcO4LtAG9AMFCQ9G0b2KuFT73aEXkNEbsfF66AK9lWg9bb9Vrx3IoEgKY0n9CtmdsRvHpfU\n6B9vAq4FEP054KCky8Bh4HFJr4SQPQwMm9kJf/81PMnHQujzg8B7ZjZpZsvAH/GmCcLIXg2sBbej\n8hqiczsWXgdVsHuALZLaJGWAp4GjQQRJEt5j2/rM7Ge3HToKPO///Dze/N9dxcxeMrNWM2vHW6B4\n08yeCzrbzMaAIUmdftM+4CzevFugfcab09sjKeeP/T68hakwslcDn3q3o/Laz47K7Xh4HdTkOPBl\nvEn8i8CLAeY8gjfPdgrv+1tO4q3g1+ItmgwAx4GaIBcDgL3AUfvPAkag2cAuvMdK9eK9G6gOq8/A\nD/D+iE4DvwbSYY93lNtacjtsr/2cSNyOg9fuWSIOh8MRE9wnHR0OhyMmuILtcDgcMcEVbIfD4YgJ\nrmA7HA5HTHAF2+FwOGKCK9gOh8MRE1zBdjgcjpjwb9rN8KSDkLULAAAAAElFTkSuQmCC\n", + "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -902,9 +912,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1018,7 +1028,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1027,9 +1037,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEUCAYAAAA8+dFZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGeRJREFUeJzt3X20ZFV55/Hvz8YXUBL6Jo4O0IojELtdOgENsGJmxBdc\npFVQOhFoEpUZBY0dXyaZMK6oMOOsTHSiImHJ4BIVDQ0qEAdHEF9BaR0UQVT6grAcMrysIcRu3yAq\nL8/8UXWhKG7VrXO7zq26t7+ftWp1nX32OfXUprof9tn77JOqQpKkUT1i0gFIkpYXE4ckqREThySp\nEROHJKkRE4ckqREThySpkVYTR5LDk1yf5MYkJ82z/2lJvpHkF0n+rMmxkqTJSFv3cSRZBdwAvBC4\nDfgWcGxVzfbUeTzwZOBlwPaqes+ox0qSJqPNHsdBwE1VdXNV3QOcBxzZW6Gq7qyqq4B7mh4rSZqM\nNhPHXsAtPdu3dsvaPlaS1KI2E8eOXANzHRRJmlK7tHju24A1Pdtr6PQcxnZsEhOMJC1CVWWxx7bZ\n47gK2C/JPkkeBRwNXDSgbv8XGPnYqmr9dfLJJ7d+3EJ1B+1vUt5f1r991FFHTW1bNjl2lHq25/ja\nc9j+UdptlLKlaMsdac+l+Lu+I+3Zv72jWutxVNW9STYBlwKrgLOqajbJid39ZyZ5Ip0ZU78G3J/k\nTcC6qvr5fMe2FetCDj300NaPW6juoP1NyvvLFvu9dsSOfOaox45Sz/YcX3sO2z9KuzUpa9s0/10f\ntG8Sv83WpuMuhSS1nOOfNhs2bOCCCy6YdBgrhu05PrbleCWhpvRSlZaZtWvXTjqEFcX2HB/bcrqY\nOPSAdevWTTqEFcX2HB/bcrqYOCRJjZg4JEmNmDgkSY2YOCRJjZg4JEmNmDgkSY2YOCRJjZg4JEmN\nmDgkSY2YOCRJjZg4JK14MzOQzP+amZl0dMtPmw9ykqSpsH07DFpIO4teI3bnZY9DktSIiUOS1IiJ\nQ5LUiIlDktSIiUPSsuHsqOngrCpJy4azo6aDPQ5JUiMmDklSIyYOSVIjJg5JUiMmDklSIyYOSZqH\nU38HczquJM3Dqb+D2eOQJDVi4pAkNWLikCQ1YuKQJDVi4pAkNWLikCQ1YuKQJDVi4pAkNWLikCQ1\n0mriSHJ4kuuT3JjkpAF1TuvuvzbJAT3lb01yXZLvJdmc5NFtxipJGk1riSPJKuB04HBgHXBskrV9\n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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1078,9 +1088,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWEAAAD7CAYAAAC7dSVGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XeYFEXewPFv9+SZnc05weZAZsk5CyIKgoKBU8yKGc/s\nmfXMYkBRDIhEyRnJOaeFZQm7bM45zE7uev9Y7tCT11NB4HA+z9PPM9Nd3V3V3fObmprqakkIgYeH\nh4fHpSFf6gx4eHh4/JV5grCHh4fHJeQJwh4eHh6XkCcIe3h4eFxCniDs4eHhcQl5grCHh4fHJaS+\n1Bn4F0mSPH3lPDw8fjMhhPRH1/0j8eZ89vdrLpsgDHCx+iyPHj2aBQsWXJR9XSxXYpngyizXlVgm\nuLjlkqTzj4ev/Y60z5/33v5/l1UQ9vDw8LhYNJc6A2d4grCHh8df0uUS/C6XfFxUKSkplzoLF9yV\nWCa4Mst1JZYJ/vfKZbjUGTjjLxmEU1NTL3UWLrgrsUxwZZbrSiwT/O+Vy9Mc4eHh4XEJXS7Bz9NP\n2MPD4y9J8zum/yRJUpQkSRslScqQJOmoJEkP/9F8XC5fBh4eHh4X1XkGPyfwmBDikCRJXsB+SZLW\nCiEyL3I+PDw8PP43nU+bsBCiFCg987pRkqRMIBzwBGEPDw+P3+JC/TEnSVJLoAOw+4+s7wnCHh4e\nf0kXoovamaaI+cAjQojGP7INTxD28PD4Szrf4CdJkgZYAHwvhFj8R7fj6R3h8edrqgeX49zLnFbI\n3nhx8+PhwXn3jpCAr4BjQogPzycfniDs8edTa+HJRMhL/+Wyowvg5JqLnyePvzz175jOoSdwK9Bf\nkqSDZ6ahfzQfHh5/Lq0ejL7waHuIGQHvLzm7bP+3oLh/llwgkLhAowZaToEp4cJsy+OKcp69I7Zx\ngSqxnpqwx8Ux7AmICocNy2FMe2hqgsZSaD0auj3ws6R7OEE+5efeTmP1f93Vv4dErdoM+VPOLnBW\nQf3eP1oCjyvMedaELxhPEPb47c413rMQoNj/+7o9b4V/HgNvFTScgsXXQN1pKM+HgJ/XVGMJ4y3m\n8SP7EfzHPr99CJy/sr+ti3GKrxC2bDh8M2j8zy5T+8PRG8Fy/L/n1+OKdz5twhfSeQdhSZKGSpJ0\nXJKkU5IkPfUr6TpLkuSSJOn6892nx58k978EpwXf/XKeJEHBM9B0jvbe/6Q3wAezoYcVcvc2B9+c\nTNi26mfJgvChD23OXRsuPw3fTDz3FwLA/rWI46uxap5G+KRB4FVnl7mdoAmC08+BUP57fn+Hcuou\n6PY8/nyG3zH9mc4rCEuSpAI+AYYCqcBNkiT9Yjy7M+neAlbDhWrs87jg3n0AXK5zL1u3DGb85Ke9\nvf7sa6+ucLQz1G349e2XzoW6xRA6CGptsHoCOC3w3atQePJnSW+kDx2IJ69108+30eMmsDX+oh35\n31QapE07cbu2IsJ7g28XhBA05ObCpveh9TwQbv59GQoB+3fDlrN5V3Dgoumcmz8XG05msf03p/e4\nPFwpNeEuQJYQIlcI4QTmANedI91DNHdorjjP/Xn8WVwuOLgZ1sz85TKnE6Z9ABEtzs478CEUbG5+\nbU2B+iFQsBgKz10jdrsbIOMJ8DLCvT9CiBcUrQKNG1r1BL3pZ+klJNJIQMhwiOyzC4Y+DLIMDuu5\nyzH+OTSlrdDmCqy+CgoNSJLE8VcfxbXqDYQ2CvwGQtUqaGiAkQPgrrHQofOZcq1nD5NwYfutR475\n7KaCht+c3uPycKW0CUcABT95X3hm3r9JkhRBc2D+7MwszwM9LxfOn9T27FYYcAMERfwynVoNZm94\na9rZeaGdYeEQyFsL4a0hUwfvfgrLJ/183cZSEAJl8rU45QYsEf4IFLgzAywSKFshLRmOnrsm2fKI\nkT2coJSf/CHXYyRsnnzuMvkGIUXHoc31wlX1OqXuG1GwEN87EUd9A0WLZkD4XVD8JXz2Hvj6wUff\ngNkMgG3K37BW7kePPwJBHWW/eggFAhM6unOOHhgX6ZmJHn+MRv3bpz/T+W7+t1xlHwJPCyHEmQ7O\n/29zxOjRo//9OiUl5U8bJHr79ivvp+PvLpMQtG38gXTzjf+eFaGLQL1yMXlZP2+LDT59DD+NmRPL\nlv97nkrY6WVPoWTZd5z0r0Dlew3DjNswHdjIkffGcix0BEgyiXU/4l+VRdjMozRMCaShfhYHD4Wg\nrpbpGRRDwI4sJP9PKJmzmU3Fv2wK2bF9B13U3ZncYy4pO8yonTIydq4/+SaLasJwi1+22HXVZSJ2\nR2FoIbDLh8k4PgJtCBgCI9jw9scYahwMLjhIkR6ODBkD+cUwaxYA1zXVEf91ATNSvsSWdgJtViSa\nwuBfPZTpPZtovcPALPHzNvUI9T6KXJ1+kf5KvP7gzy3XsWPHyMz83WPj/Cr174l+/08r3QUhhPjD\nE9ANWP2T988AT/1HmtNAzpmpASgDrj3HtsTFMnPmzIu2r4vld5epJkuIj81COCxn55XkCfHJk2ff\nl2UIcXqTEI+PE6Km6j/WLxPinjghFl4nhKW8ed726UKseUOIee2E+GCEEAVHhZjWXohxEUJE6IWy\n3F9Yjz0vToiJwmLfJ8SMQCFe8RJipEaIh8KEKN19dvtNmUIoiljw1SdCHFgpauc/JRbmTBbuo4uF\nsFuEmG4UYs+YX5bL7RRi33VCvDBSuOo/ELXVEaKiKkyIfX2FWPuSKP5+uqhu21KIg1uESD+z/ooF\n/1794N5ewjVtklgq3hbzxAtCEe5fPYxNwi6miQ2/XKC4hVgfL4Sj9heLrsTrT4iLW64z8eJ8Ypdo\nMv326Xz392vT+TZH7AMSJElqKUmSFhgLLP2PIB8rhIgRQsTQ3C58vxBi6Tm25XEx1Z0GRQ95O87O\nC4mCsvyz7/3jYfN7oJ8D2T+5wUIIxA/P4mpfg9J2EGL9HeCygtEHvFvA4M+hjwq+HwllRRAfCeP7\nINka0e/ZTNzcCkqKH8Ema3GG2qHv7VCohmWPwadXw84eULscbI20zZwPb43AR2NmxOx/IM8bCd+P\nh1aPw64TPy+TYoH850AUgf4YqkotmvJAsMbjrA+CUhthaxZROWwE1VNfgRwD7JkOk5sffl7KVqyd\n2tJUsIcwkcBVPIj0Xz4iRymgNVG/XFCxDpryoP7I7zwxHheLWv3bpz81H+ezshDCJUnSg8AaQAV8\nJYTIlCTp3jPLp16APHr8GVoMBmMcvHo/vL4SIhOau5sJ0TxJUvPtxg1doF08VGfDvFug1xMQ3gGp\nyQWj/47V9xEMhwxI33mD5kbILoSsbrj2LEeNGxIGwLZ9MKIH+HaA69ahUmuJLTlAwaCvqHQeoX2m\nFmlXINIhIG43vFwLg+NwM5KS5BTib3sBDr6J2t6AK34Ian0KrFoC+cfgxVaQkIpItWJtacVYYYPs\nwdA5FQ7XowkbjnHNJ9R28SZo6zGYdpB4jYacsV3xf39d8xdMiS8A2UzHLIZSHV9OWlY0UsKvN0MA\nHKGAcXT/5YKgQRA2GrzbXOAT53GhaHSXOgfNzjvGCyFWAav+Y945g68QYsL57s/jAgoIA3cZ5B5t\nDsIAgeFQVQqBYVCUBWvmwrL05qBsqYRt78H6V0FSI8KfRqUEUDU0C+OuzzDun4UU2x02HWRX/EBO\n/q0746xRGLfXgXc+NIQ1B3bA7bKjPVJKfWcVWQEZ+Ma1JFilQFA7MH4LpenwzhY0OeOpDy9Am9lA\n8R0dCPN5DrVPH+A1eLwTtTWnqHQ7iSkrRE7XASbYMA+03hAcifrvX+O0TEZSnNgnJKHL+hQp5WFa\nvPAs7s9GI9mDkVuEY2/Kp85owVG6nzY9X0DaMAcSOv7ymJ3cAol9AFBQsOHEyDk+za5GUHuDxudP\nOXUeF8BlMmiD5465vzKdAT4/CKu/BpezeV5Cezh1CE6nw51dIK1bcwAGMPhA59G469TU+SnsnDGO\np8qqmSi6UX0kAVsPHU75FGKojV7d29Mv8G98FFBGldsGQSro8xI2LMzkVb6MmkNT21GoZBXkCBwr\nFqMU7oL0xdDHDWQhfzCU0ztvxJnzLSdG1iNFdMPg0+ds/m94ml0PdCXQqxx7qgLBXcE0EIIrwXQc\nKjIoWPEh6si78Mq0UJOQDk1T4Ng7qFpdi23iVvKP6VF6x+N8aSSBWyvoe2gZ0rGxkLXx3L0blr8K\nVXkAnKacWP6f2rKtCAyRF+5ceVx4l0kftcvku8DjoinKgYiY5teyFvQ6uOZemPcudOsKcjmcLAJh\nh1oF7nkWgCY3bGrQsLRIw3X1dRy4vS1uSzRjtm+l29FPqbIH0PC5N+bHxuBuXUBBXhEmVx1P5Nmo\nVCyUarWcMp2mdtVs/GceooXdh5CXJhC61xuRsZPCWg1lXrUEOoy4EtJoSi5GtTuPgTWvUjdUjX9l\nS0RYJU7y0NACFIXyQ1PRDRCYk8246YF6cSk0bIWe/SDZD1HoZuutaVwjuqIR36E5UIbN3RF98Udw\nZAMmfQSyr4GNRzW4Xr2ZQW+tQS6swDG4HrU1DPn4Hkjp+vPjV3wU1k2Gse9zmDzSlCQOVpTzeFUw\nGgkG+cCjoaC1FoDeE4Qva5dJ9LtMsuFxURzaDnM+gX/Obn6v1cP+eyHxQVg9FVSnISgack4gjmyg\nttcNfCvHsPsU6GTorP6Rf5y6D3sbHzrv2YWxaQZSYyNqtYug4DJO9WyB7/F5yNaBRJUsRHdoDnZ9\nKnofC1aTiU3aALoPexR/sRfLyx9i/+ET/COTsBtykYe4oKsf1eZGdEoU/tm7kDqMo3zddry3GJF6\nFOG9Rk1l1zsx6+/Ga5OTPcNa0F/dHZf8GlrLY0hDliCONWDXrcduN6C3RHGSHPKrdpOgdMe1cT0V\n+/OIuroaEhOAOvT9S0hOWUfw/E2o2rYEnQ7mCOqw4btjMVJ8e9DoEAJyrQqO1BvZmmdk08bjZAUG\nk2T0IblkKzHe0C8smJsDQS0BtkIwRJ899oU5sHEJtO9xCU68xzmpLnUGmnmC8F9FcR48dh3c+pOb\nKfQh4KWHDV1g3DSYuwpu/ALmdqZ+2H18EzqArl4wMVTwiVSNQ2lLcHZL5A1a5L9/B28mYattTdbL\nHYg6sZ/IBplaH4nD8al0DEpFV7MPa1USZp9v8NW14XlpGF+zjy+uVnhO2xPvb75CbGnAPcSXyNYB\nGMpOgaM9NFRDNVSmrKd2eDCJy4w09XsA+2ALoYUJVOU+TdW+CvyiUpD9a5CPt0bK/gTKT2AbHooz\nvxDTFl/UVUW8MPA5Gq7vRPGBSLx6aAlOKoSuPuBcAN5fIm3aTtio75FbtofMaWB7A63LhLyrHOe+\nybyo8SfX3ArURlrY6xhU72bQ6XkkH0onNCyf+Nd3wKHZzb8e7lja3EvEVgHWAvA7E3B3fA4z74fk\nbtDiKviPDhNuZRsqudfFuxY8ml0m0e8yyYbHn66mHAZcD/3O3FXucoLOB/x7Qto0KFoEnbrCmm/g\n1X/gY2jD47hoNCs8QTmj7fn0VVLgixNwdQu4vTX06YT+zR+JcqST03YSoYU9WBEWhpdJIeDUOug+\nD7+3noYQb6jX4zjyDT1qp9JvfRk1AUFUtA0nND4L443fIYSWxo+vwSvAH5RtVEd7Yy/XEV2QAxOX\nYnj3Y2r+EYw+agjeSxLYfY0fvdIPo62uRO49B9H3KhrqJiLZs9Fn90IdGQynf0BKjER3QEFesZpa\nOQzZXYTG3oTcsSXsHwvD7kNO6InAjcuci7qFCqk8FpXuKIvvuYP7S1cTnbkAhvdEeBUjyjORfP2Y\nXjCB+9fdTMZHAzl1yzCcVi3Dilbjtf9FnCn3o6k/AiofxJrbkeoKYZAfdHwQzMnAwZ+dGqf7PSSC\nkOWki35Z/KVdKb0jPC5jjlOgTQBFgWmvwyvTwXzm3/rPn4Nhg0HvC2F3QsRo2HcnbF0GvrWgOUWd\nrR3H5FheRYsPBfDdEYgOBc1xlJu0NLb0x7x9EDprFonm1hSElSK8Gqmp0yK6fImkNkD6JhigRixa\ngjp/JrG9Q3DeLIhKT0X75my4Iw58E5EElFVch1Gn0BDqi6VbJyJ3BrNLkel26j0c1w7A96UZVPgN\nRl9fS+dtKtytrSjVAodqPnbH9xiL6tDGz+PHrmvwOfgVAeNvIcAajj4zn+Ipo9Dl7yWoPJfaaQb8\nbjiOpBgQrunYdi3B2qYWY40WjbYUjlqReoxi5MFCDoTp0MdFErzqKOLWB1BSTqDeu51BPRo5mtCe\nnI5x1PuXcceu3XiVfYlTA6XVM4mqyMe9sAibJQHTe+ua7xNVe0FT1S9Ok6Kk4+RTdPJHF/Xy+Mu7\nTKKfp3fElcqeCVVvNL9e/h30Hwk6PWTsa55nbYR3XwNtWPN7rS90nQXdouFwC1baX2NZyxRS49T4\nRF4Pa+1Q4wB9HU75GlzGGnR5q2DtdjhZjBxWynbJh6CyEuIC8jmkfhuRsx3hW4lYnYUI9kF68kk0\ngcmYTLPRqodAkj8cDYf6WijKxKt+I5asjdQkGAg56E9T13Asw2VKe/mjbH+eppMnUSosrL1vIIdu\nu4qa5Ghs9T44THn4rC1Gm6vA4Rs44VVIjj6eYj87m3s4mX2zkR9GuJh/dyonB3WgUapDKpVAa4eg\nehSlDE2jN/rGGDgcAH6JcOPTqE/tIG3FSZYkpGH1k2Dqbcj2NE4kxHBqgIb9Vddy69oF3Ld2BeaT\nx6g3m3h7yOts6foc6B+mSTcIe5UCGq8zAbgC9rz7s9MkhECtGo9K7nfRLg2PMy6T3hGeIHw5Un7D\nWLf1+XD4S3Cf4wGaih2Kbz6Trha+exfMvrB0OhzY2jy/Xa/mkcjsPxnER6WDXnOoaB1JZOk2hn9R\ng88r62DHWIjdD9dI2BM1nOqVh1zXBl2AEam7F3QYhit4Ni5NFes1ndCfPIXVuZ6iitsQqQ5QaZCn\n5yC9MxtHpBpp1RT47AHIqcQZWkvTqqHUFjyEubUN+8kG9Pok6qNOo3V8S1zeHkKmFJJ9chBv9X+d\n7N6dkCK8UHvVEe6qgMhO1OdrQV0Mra+C+mwe3LaQSFcesZkFjGxow/jET3nI3ofbDq+jS9VehPBF\n0BuxTcE6vC/G0wa8DnekrPsjWNWpCPNhcFeCyYRKo+JvU77m68FjcPWyIH30GNGtH2X8dpnrrelo\nvW3YkkZQ6BdM6SkzNWqJSIsdBk3EVVyGu7j47JM+9n4I5T9vEJYkCZXcE0HtH7hQPM6L6ndMf6LL\npELu8TNWC7x8P1jqYeiN0MkONavB1BYiHoOslbDzNag+CfmbAOhRlQvLVjSPjJZzDLwl0JXBlkjw\nBlY/DJYaCAqD+XvBUQfXDoIlX8KE58/u224l4LOlBPV0QLQMlQJmyIhEPUp/gTqigsTKF1F7rwf/\na6D0SyRnCVsKJtLS7U/7Qz+QXRRGas5J9GY/MIcgdcuAa/oiJYeiXTwDke5Aaq2GdknY9AOwbdmH\n9+7DNOx34FAE/lMr0N84FnL+QcjHjVR2TkKTLPOYeIM8fQRDNmuQfA+i0g2nNHAX4RvyOTH+ahKC\n+qGKeAJp3Xw6brqbjO6pRGy5Dc2S14h1W3CHlaAofjirmyjeUUJ4Cw3GygBIeAKx8Vm8UhspqLKx\nc+gDjM78Hq8gAzitaKUWpDVFs7DHM9zYpEX9ZEfc5kCiY06zc3sKqfbvCPGDo9fFM+T4UnrtnYSt\n4jF0XbugGzAA6V93IjZVgDkCan5+uiWiEGLnxbq6PP7lPKKfJElfA8OBciHEed0W6akJX45MZnhp\nKjRZYNlM2OIEfRso/x7yX4LYPjAhHe46AVd/AyNmsiNgIrR7EIpK4VQuTD0FO9MhwAqpo8B8FWgG\nww1zYMwsSG4DvW+EvONQUQwNpVCeAfunIAfWgXko1JugUkJYTBTc3JvTnbohGW5DbX8FohZA9su4\nt5VimZtBzORTtP9wA2p3NUkdS3HFCJY9OQSRXA0+LkjoD3O2IYWbcLWLQiSoIaABc9xJgrpI6F7Z\ngFeiH2h0OG2+OH+YhvKamwq1Dx/1/pAWejWHojtQkzQQQ+EKDKfrUW9Pp8XxEjQlTswnc9murEZZ\n+AWsmI2hykZEro6ZKTfh9i4AVw2rr3sN1ai5ePWQcAfXIXkbIdsFXZ+i+pab0JcOIO5EAaYIN0uT\nwB4sEOoCHEcz6Dz7TWyuQCbrQLSJQSWycDm1hDgEJlUT2nCFbSHD6bWlDbIXaNsXgFaHZDQ2n1NJ\nAkMAdH+6+b1y9heMJEUhRMEvLgOPP9n5NUd8Q/PDLC5INjwulaoNEDDg3MuMJvhsOag1sGEJvLcS\nBj4Kid0g6wmwaCHxGVA13wYcUbEPFsyG5Bugz0B48hsIrEAEPoj0yGRYOw8+vBeyTJB1CqoPQ10e\nIqUOnuuEEluNZFYjt+iGaJeCy3cnslVGZbViGRVGRQcNiSeikZMmw9qNEN8GJeUkNS4tTX46KpN6\nE3P0AInHgpGzdiLH2omd/QFCa0fYFZw7X4SrQ9Acq0SdVIkrsQVqQwLSITv0eQ2iO6CfdhDD7V1Q\ntZaQ19Xyeqd/0K/oR17xm4v94B4CR31C64LNSL0WoohZ2L1jUcr2oDEVE5ytQVOykHKHk+DW7bBW\nxhPctIfkSgtTW43ngW1uFL9AKJ9H0CiJqhlOMHpB4VaUzG9wBQlUmm5g6szoupU0ZETg0ueh7Hag\n61uGlFtKm/mhvD32anq2D6b1bDN6h52W/RSsx1RUBXYgrDIU4yOvIErHIOd9gyhzIhv0Z89pXR74\ntMCoWg6NJ6F4DiS9jCSZEFjOeRkoNCFjvNBXngecV/QTQmyVJKnlJc6Gx3nLnQySFvz/nz6i+jNj\n5Q4ZDQNHwopZ8Mhj0KYdJAfByTuha3uI/Dv1XhFgaoJhj0PRDfB2O8RDWzg5awcxG9ejMgSgFNfi\nfm82oudw5FoDzvUAXuhK7UgBsUidrkUoh2gaZkFYKzBFLcSVXIv+6/voeE8h0ogOEHQYAvNxNan5\nZ8LzJESYSCxeSudjs5DWBKDuWgo+LXGZq9BXViMsAqXWjKI2U17fgJe3HzaTAWNlGqYDG1DX+SAd\nuAk6jYQxr+Az5locpm955+nFZB4IZWLZh9iLbLhvvpW2B96DyhIwVKAaNg2DMQD8QWlZhJh6C8Y7\nelDLfjKULOJ3ORAFRqIbisnzdbLcu4TYdT+ACEG2BRDQswBRZUFqciJ2vIQfevhiFmhUSO27YizJ\nQClqQg4FkW1FSZNptWEBz484Sa53RzrXKBDpwnWoM4qlgIUnUrhh1WycsXWIvFxUwSug7ARaaxa4\nb4Wr3gUhqD9+glbVn0JJOpRsh/p0SJvHuYbZdlNLDVMItD8KxRlQdASS+kPQmTsea8rhyHaIaQXB\nUc23oXv8dp4uah5IKjjxd+iyFlReP1skhJvmR/OdoVLBteOhLgu2/Aj7S8BXD9fEQv6rJIXmQFUg\n5K8HTREi+g6sIWo0R/dROec+fPW9ULlBZXKjah2H1KYLOqUjTB4Jdz8Jq6ZDp/G49P2h5EZ0OWak\nuFOotYEQ2A727oV1NlwVK7DJOsrbRPCgbiJK2Ql8p81FSmgP3hlYtAHIQTXUJw0gdPoi7FYdli7e\n6DL8iF53CnR2nEEmqoaWoQ+5DbdtJzrtI0grP4U3hiF1vwF3jYHUhC3c1DEC32nVNNTZMe3xhvos\nsFigtwGMAf86UMiGCNAn4VXzd4x+IfjPTUNSihGyIEjdRHtLJku79+dYmC9x/n9DrzIgr26PZV0T\ndoc/9jeNhJY8Dr6vwj8+RvQYhG1wW0wTq8HqhVjhxHXCQX1HfxJXHyc5ti2EXg+m+WhubUneqmhS\njx1GH2FANWwEyoG9KCfr0CQcQgp3g1cLWPwwqFSojUZyD4aQ0HYu+A1t/nPUbQWpuaeEdGacDoFC\nmftB1K4QWPAUbPwERr8NVgcsfAeqa5sHWFr7A6T1hjtehXZ98PgdLpPo52kTvpSS/gmGGHBmQmE/\nqHoBnP9qG6zA7Zr+y3VqSiDcD8YPQ7TMxvndclhgJ2b6FrCug1nXQEkZ7qn7McxZRIT3YOrebInx\n1lbo7k1F00dGjtEgqVrCuk9h+B2QlAc+xbi3jcVhuR3jsXrUFgGHHoPlt4EpC1poOR4i823nzqia\njMSqWuO7qD3+U99CDqgAQ1+Q4zHtclIbqCJowVLo3xupyxL0GYOQUm2UT7qNph5RaKKLCT1dhN73\nKOrO42nqvhXnU0+D0YeG/B+o0xpIbFpH6OE5NPXxQY6JR+3ngEY3dP0nJE4EWxksfA2WvgRV2dC6\nJ2LyCFyzBmJs7IF2X1sc3T+itkMMpoHj6F+6nrURqWzYPB/uvQOpQoupRxjy4CSktXVIql3w2PWQ\nshsl40Zyvg/BFWBGxLRE5Llo6BxAVb/eNJwIQdo+D1r1ROq1CEnvRWxgOSc0o3FWlSKbFdTjJyDf\nFIUYXI+tXwdEzwkQlgrZh9EY1dTkaKHzSfCOgcQXIeNRJPzgJz0klOrTeM3cSeD7X8KhDDD3hn2H\nYP0sqMiAaF+Y8CoowEvzmwPw//fwU49zu0x6R3iC8KVkSgRZB6pE8H0U6qdBw7fNNSPFiMvxAIpy\n5pEu/+q21u066D8eWtUh3GaIMMJNVaT3HwOdv0YkhmP5LhZrgRWaKtAl3IvGWYLVIkNUDwiSIPNT\n2PMsXD0U2kZA5R7cHfTYwwoxTI9HmhuJtNQFlgCITMKlaeBYv2ickX7cNmMTho018ME2KMgHcRCK\nymH7bOjYBymxAd/0GpyKG6bsQLPpQxyfr0ef2RvdiSVURGhw17aHAW+BnwZV5RywbsPm9Rk8tQzT\nkJsJy2ogefFJdLGfUTw2FmNEOI1mKE68Hra8Awufg7c6Q+mP4O8Fax6FsFZw8giqo/ugaTdy7j68\nVk7CV2fGnDONtruO8eq3H7CmZwjKO29Bm9uRQjPx81tC4Ag7rJ2CPXMtuLojCkNQyRHIy23w4jHq\n3jGgC44h5d3j6Fp1pMlohOShkO2GbVOwB6q4a+fzmIp8cLwzAseae7AHLsYRa0OXa0aqPQ2+wdBp\nPOql92JYLZvPAAAgAElEQVRw1YI2FGLfAp808OuBVFeKIvLB7YLt05H/3h9NjRdycCM88CS8vwWe\nnwkTXoZIPzj6JdSUQWzr5qFH7fWw97VLdSX/b/L0E/YAIHgElC8HVxREp4OuM5TdADsfBLxR3Gee\n6/bmbc3dnJx2CNyMIsfhzjShaRELu1cTG7oVpeQ+nBWV6AJ2Yh5rR8p8DUo3EFECRUELYOl+KOwI\n6S4YdwBqd0PGVyi6SOx93eiX2JAyTkCcHhKMoLFDm8l89tArVAyYQJu2j6ORLRCrA5UF5rqhTg2T\nVmCPC0Ip/4p6bzXqCifV3c0ocR2Qqo5iGNELqzUFc69DhK0KxBrphA37wWc2ks9gjCW1aKqsKMfu\ngOLpIGLAHYR7zT1Y/RVeCezIE2l/w6vVDdD7RThdA/F9IbEX9P47GA0oQUEoskKDnwrFkQsOI6yX\nkFb7YdpShlQg023lJl59/TmqJw9BfP0P3CY9lqYI1PKjOE3BcGIf7tl/o/5EBlEPHsGeq6dkTDiG\nFQ5Mx1UwLR1zTj3m/VUoc0ZAaT5cswzdUjciLhxtaSFKUy3qHRvQ6b/FWPwA8smlkP4MjpNfUO/f\nGmnYq/TqmAHbHoPcxVBxGvzHINeWItInw5RRoFJR/eVE5Idng39bsOb+/JppexNEdoaEdpCcBhFh\nsGgAiN/Qv9zjrPMIwpIkzQZ2AImSJBVIkvSHx0q/TFpF/sKChsLRe6DoB0h5vblrmK4z0qEItIXd\ncEcXgAaIiIecDNAeBkMe1tfcGJISEf5dcLl6oQ3ah+JjpLHvINzHwwhytIcud4EQGJbMobFHDTXa\nMvyi74big7DvXmiUcOaZcMTuQrtSi4i24Qxx4DY2ojEruNcquPLfoNs4C+b1Tpxqb+QJ76CKHwmn\n1zUPXJOzGbJ/4GhHFbvjb8di8qXQN4DWjUX0G5dJQt7VaDccwfrpIozJRrSmNmiL9sGhyRAfA+Gd\nkQpXo8/bg4j1w6nyRdtQieg2nvLUbJa7W2Dz0vJUw16889OoadqM14ur0Kx+GYr2Qv0H4LUE+fXl\nFKYGoFi9Oe0TwqGHh9AjMImkld8iQiUUv0bUboF3Yz7OYH+qI33xqrRgjCmCsifRDozGsS2CitUV\nWPYUo9w3CW9jCX6ba2iI9kfdOx15chJUV4F/BK7OxbgCjcjKXqQWjTh6+CBX1qNdJiO3HEnNu8+y\ns/NnbNtgILtIh0ar56F7VHRlK94JVjj4HfgPgoMzYOkrqMze0CsD7joJhiAMW59C1zsVBi6AzM9+\nfs1EdYG1jVBTCf6hYKtqvmknwtMm/LucRzODEOKmC5UNTxC+1FRGQAbhhMP3QI9NkD8eKrsimaKQ\njfMR5jSkeD/48WHomY5r17PgU4SkA8vCTNxHN2N+QIJ6Ez4/LEcJSoOiwxCRBHs/gpDriciZwpGP\n40hdPIdAyQWNCYjd7+O8xYdCJhLTdi9K2gtQeABN5ke4fdIQvfKwJDdRG6Fj6/Vd6KvbQkLlexic\nwWiSr4GobrB6IpyYQlq1TMdlh9nRZRAqh5XUskgs11XQUNiIub4BQxd/mj5/D9NgM9QWgUkPIcGw\n/y7QREC3dKidgFx8EE5b2NnrbtY4W3DLztnEBDegPqTBHpPI8RH1dJWCYdCL8EkSvLYLsk3Y7Haq\nJgbRLulLote+T+rGz9nRZwRLRvbB7D+Qrv0W0HHWMaxd7kGjauDIoCGkFN1F8BErNbF34V+gQ7N4\nCiGBAuWfJuzHv8VhclA61QvdMYUiezLGtGrk01ryOiXjr8sm0/kdQXku7BURdJSK2FHQgoWuVMa8\nt5FDYR3xi3Nwx+N3Eld2F5JPb6iYCuYJbJsfQ185B2qfhPwiiBuIFBQGeRnwURyMXYFxXQn0Brzj\noCYLFnwCRScQsoIIC0ReuR5+SIHUvrCvGobOBv+US3wx/4+5TKLfZZKNv7Bt6yD2arCcgsZT0HAE\nrOmQpoa95eAVAnVvQpAJGjIRhxMQma9g6G2EbAdalYL6zigqqnU0WjtgTj5BoH8QVDlg2VOIO5dQ\nrF1JkSMKWVbI7WxCVRWMLn893BOL1vdzttavISnkazC0BOkY1F+FaupamLGHQP9AzM6x3Kvcx/tN\n/bhl9Vpit90JKgkSQ6FjGIQ9A/tz4eB3RI8EjtZifnwejdpnqU2twjxuB1pHI9Zr+yOkLCRnLbQx\nQvq3EPMsHJ4Mhz6Fnquxe8/ga6/dqOV0njy0ktycdmjWr6C2py+Fffaj4ECuzIZH+zXf0WcGR8++\n5AZkkFjqB3PGQysteksxAxZNZUCLDuS2hO2D41n1RG8K1HGMrtvLoNPjUYQNl1GDwb0A13cNECsh\nKwJ5nwWNj4vauT5oB9yNX9BcFI0PdaVd0F99O4mhKdhEBnE1U/lknBdTDvZhefQsOrSTaDuiiMC4\nGfR75m1EcA7u3I1I1nwINjbXaiWJcuub8Nm3MPd56JEILbtD/yehZi6suQemXwOVGnjjOqhuhIrD\nUL4CxeyFMDQgG9pA204Q3RN8fEGbBz7RIHlaF38X/X9PcjF4ztqF4nb+sfUmvwKNiVC9EUoXwf7r\nQDSCpgB8WiHVt0DUCERxJUpLO4opHSm1EckYAgY36tanwalHX1tBixOLcUk25LxSDiSrEToj0s5v\nMa3XEvhZIeoyCUVjwB2QSFVwMVrzx1Qb2hLk3xfMLaHmAEr2j4hPp2OX6nH7eSO5FZLUz2Lya8Uk\nVzIzx48m54Ol8MxLYD8BC5xwUAfDxyFSw1FzgJDjp9h95C1Cd1lRV+Uhdt6CdPR5dD2rcRzSI3wC\nYLsKqoNAsYE9F05+jLTzQ5zpVVy/fDFjFBeG6KchX4bbtyC6t8XlyiE6T0akfwsTJ8HwZ1FkQePx\nHQQ11qJPmAQ97oLrx0CfNIhtCyo9kfluxk1ewUOH19Ih8xjHirzZsbkN8kJvhOYGsgPGoWo7EGdt\nMK5CgdMUj7NUjde71YSteged9xhMhUcJr1bQ55ejebI1PnfeTYuX1zO5ewYNj3xEr6Z6QrUmAsMG\nIhx52OI74nrmEaQcCfrNBVvt2cdEIUHbPjDudagJgg63QNV3kD8O6rrCUVVzr4dje6GpFAaMQRjc\nODo0osT7Il7+AEZNhIYyKF0Ofqebuzt6/D6XSe8IT034QlDcsPt26P79Tz5ov1FdDUz+J9ymx627\nASWvFE1iPlhPQ4eHYetDuLtVIUL9EXUS0jYJlVc8tBmC2PceIt5NvfldvinO4KbGeeR2aEGIZTB+\na2ZTXFxK4P6dVJfG4PvEA/jmfE5jQwrVaYEkvLYdqUM4xw2nSZYSYONMxOm/4/zWQuW1EfhVBKDb\nuBbys/Cb9jYktcM4pBeTCufzzrBhjLUfIClARpo0A95/EPzHIQW0QvidRB3Xge2dbiKcZIJooqzr\nQszVOtSRe6lduIfA1jIq2sKWpWCMhOyW4J0FOT/gGxqEMOmQHt6GNPlNDrfyo1VKb3zzwikOisS3\n5UCKWi4giAnoRAJFmYvxqsqEthFIZXWQ0AbihoBzB8Qfh4B3Uda+hS0uFp9Dm7jPdgyaBKL/M0hH\nBVqHAam8AKWmEf3rX9CkCsb6wrV4RQlMm4JRbnsUtzoP7cwK3LVz2CY5yBh1LbF1Gq7eugSkvehd\nTVSP7I87oS9eW5Zg/ehzdPd/g3pvNtITd8HB+Oba6r/IMorLhZzcGQpPwtpZEL0JVvWAfYcRtfXQ\n6yGkYeFgLYasIkSgBq67B5LH4FQWo5PvhUN3g0kNvgLiBRiU5j/nZM/H+je5TA6TpyZ8IbhtcGIu\nlC78/es++QYkt4OIm3AXKqjCQGjicepaYPd/AVfHUlSHFHA/gPjmbuTVbVEV+yIOfY7UpCDvGYrQ\nuqmUUjCqdURwF6WL/Kn9zMl6uR9SWgiaEX7UuFfj56wkqiKRkGxBwfBo+Ed3CtZNJva6vogdD1P7\nRQPlyTpK74rEaEyETbMhoTWNo65jxfvtWToog+LhHXmqrI6vknqxcEIXStYOhWgjoAX/ZEyqEORR\nb3I37fmYfaynEZ0cx8nA96mItCH7GnA3OBC9j4NeC/sWwYBnoDgQNGakPnMRY4dDUDXc1RY/VzYA\nNXorfnTDzFDCeIdqvuGYdRJ+6XWY/ELRq5OwSfNwH50Bn0yCk11BngSzxtDYoRRHey84UAsOBe7+\nDmnT51B9HCKHkDhtL3ZXNg2dQ2j46EPM/dqgM0o0rNHQOPZrGLsKt68RtaWRAXIuMYZ6jrfVs2hw\nN6r8tZSMDUBTXYbq1ilITQfx+lSPdtT1SLIC/3gCZr/f3Me3ZCWO2lqknBxyPv8cvhoHmUtwrXwB\nZh+DVtfjmDAGW7g/R5TjHI0biXAfxa3fh5Lihy75fSS5B0KUofhZwWmEchvk6OD5vnBfPLxwB3zz\nDuxaB7Vnxi4WAhrrL9jlfsW4TLqoXSbfBf/j3DaQBGR9AmGjf9+6A4bD4pkQPBGhfxkC3SiShgal\nJcrpDDZX34c5qSVdvn4CaZ0JXVg5CAlprw+SMRoRs47tcn/avroeEVFL7ZgvCb39Ptr/MJeQw1PZ\nbUwkvKqRlvNMSI8/ARpffHbtpaaFjurEcIYvWoUGP0SvCShHplE7Po4E413YXxtD/spHyW+1B3q0\nR6neTEdbFyK1oZB3E6/VJ/DM4LsxtduDStOe4A3vIBVuBv86xLUd0FjraZObi71hAX6ZDpDAnuhL\n4w8DkL9ai6pbB3zrsyA6G/Z+AwExUBkIk3shPfQV7pdiUC0LI2HGDLj5GSpMTcQqfZqrDVXFBK7c\nQ0j2RpRQMwiB9kglituOHH4d1G5CpKcjbdWA2gfvpSXQdBxCtNB+OCz7Aq7+EMoexz3/Dixhegr6\nxxD82NcYYrYjCpuwlmhRTxyIiLuF/AmD8OsSR+DL16JZeYgR2bkMOPIDtk5GsgvD0b9nQxfdG/+v\n7kOuGwqNddA4H3IPw/HX4K57oKAE8magbZ0MXl7o9Q4ITgErpEc10eGAC7d1MTTkoA800rqhhLp1\nI1naYxRDdh3G0FRBU95YDrccTwds2JX7MLTsBf0bYfFxGLMfoh+D4JcgOxOOp8P6RVBX3fzr7OA2\nGPcg3PQgGDxjUQCXzTPmPDXhC0HjA23uBJ/uv56uvuSX84RAlBbirL0DUqqRAoJQuR/Dv+WPBIoa\nRqmm0+X456zU9GHdve3ZG92GZVdtxZpyN+66fBpXtEbzwIcEzlsAkpm2zwQRMno0doeVUtN28vy6\nQ8f21JbXYH11CzjLoEkhOvkhKtuZ8d5UhUispeHbWeQ80JOY+izSlXx2MBvVoNvo8/5OBlZfzfDl\nc4h0RkHsOLg+C51d4ZUVc9jJIGaHmDjY7jgOcQxdRjGWD0KQp4/hpg/foK9vJlUdb8Ivrw+hXdcR\nqh5G/f39UOUfpyk4Hgp8IK4S9u8Fixek3Yj0+njI3EBNrx34tDiN7f5EFDmXItf9OCimMKCEbb1l\n0qvbYhUxNKXpsIWDpiAI+v2dpuru2Ct7Qt8H4aUsKu67lqZGsBZJsHYVbN4HM75AqTfiqnMjt0lE\nVMfj9N+MV4cRaKgk97Ou5Lu3URVVQcInY1H5pGJ7+RvsRXugaA9eZhvqf1aTODUD021aNj4WwFzn\np5Q7R4I1EA68CeZE6DYPOn+OElAGcc/A9ltR9+5AYJAVgkMhbxXaloMpf2Io7qu3o7r5G6SkCOTO\nJvw2SwyZOQXtgRqc5WpUR5YSUlWBVv0uAjtYsyE6BQa2hU0jwGcAFN0Chrdh1Dh47lN4ezZMeheG\n3AhqNWTs/XM+A/+LLpOasCcIXwgqNUQOh7Ltv57ux6eh9sxtyULAj4tg4iik6Fik7TfiXjQaNCVQ\n3vwMMmG8GzHdhk/RHq7PX8yo+vW0Tk0kav6XTFJaMvLJ0zzWcxzORz7E+3RPNB102IMiqdk4iYzK\nZ0g57WC4+ICpwddinLUOuXofTYe/wj74NM66DwicfYrDC3vQJEVBSBXB9fvxqiyluzSO/txJrLYn\nmjvfhjeuRY65FVqeqeV7x4E6Bq/TGXTNr2at1kx5VCjSaJmSrqHUPTqAqnsikPrl4V9RTMBzE+G2\nJ8BZjuHUG7S034rGFkaD4QTiyxKI+QRM8bBvHawuRLpqOPL2k/isdNM0Tqb0b1ZCHy8leFUFWouZ\nPPtS0p5LxzevHlv3YmSvfhjm1MHRHJxjrkWZ8hWavhNg+Lug90E5dhS9xoSsd2JJjYcBUTj7BWM7\nUY4Y/TZsCyBk5o/UPXQVquWrkXU+RAs/zFdfT7ahhDJjOX6nd6KL80JobDhkGeWUBkeQAe2N/gS0\njWOEl4qhBfvZYpZYEjWQJkM+WHKanylXvgFRm4Wy5Q7YsouREXPQHvkSnNvB0Q99sC/ZmqUgS8ir\nRkPtHlivxR2cSs5IHyRJizWxPTXGIGyr51Mi+SPLz+EKLUA52gQjFkHaNbBgLwQ/BrYTkD367HCZ\nweHwxLvwt8ehU98/6UPwP8gThK8w3m3AVv7raWQNfHcNbFwKD4yCylL4aD7c9zQsm4+mewvQtkCU\nLkdYKpGSJiPf+z3uAwacoT4opk7o85bT7uAXfFZZwCNyNWnGPArjulD3Yzuk9HIKTm4lT7eedn63\no/epwigcTCyaSGVta5ikRpNhR/2WBe0zFSx69WrCVwtK2zZiS5OJWpQLoh+qdx+AyXdBXQW0SIHE\neFi7CWzVZ8vSegIY7Azb9iUvOLfjdNhBNiD7GClRKjDW3YyjixF3vgr8/cE/GGQtWIqRHC701XUE\nNPnQlGagLONRnM4a3DFGLLcMwvX9Dho7CkrbbiP641y8ckyYOvTD+OBWnMNCiXtrNeYTlXjfZMN9\n0o9CKY/GW9NwJWloDExD9cE8VNffCbIMThuGk2WodHY0oQE4dmdhcfujFK1A73ag2/QiBstGQsKq\niZ79LW51JVJ4K0zBM/AJc9DZkk7I6o0UjTZjS6tBE+6H6B1K3gdj0KTqwV6Hz8It6Oa8idleyeiS\nGvpWuGlUeYFdgSUTYOZgpKwGXLo8RL3Aka9DanAjtqoR6xfi3v4lkt4K2RLC1x8OB8JjX+KY+AxR\nXzXh9FVzpH9PAnz0xFvqSVe+pr72PuxZVkRtO6g8CroM+D/23js6iiPt2746TJ7RzChnISEkEBIZ\njMjZJIMDJjiD0zrhdfY64bWN4zrnuDhhY2MwYILJOQqBSAKUszTK0mhyd39/aL9vH7/P7vt4lw3e\n5/N1Tp/T3dXTVX266tc1ddd9l84Au8uh7ylI/QyUlr9SEX8F6I6i9nO3fyK/ivA/CkMCyCJ0Vvzl\n9LMnoNYKW11QVAivLIerbgO9HtUchnZgF1Ly99Dph5ImhK6jAAgXTUL6tBNtxECass8Q8HQhDAMt\n8iMmnuvHbe7t3NboQlVNHHigH0F7LD1TLsf/4V14Mixo+FEEE0VFaYTar0JXE4NYK+D1+cjefxpF\nbEETuwglZqL2cMLJEjDZ4KaXwR7VXfbLHwJXE2z/GPze7nPOHLDbEeKzSSw7wnhfHK64sSRk3kcv\nNYIKZx7NbSk8WX4dW8fPBWsYCAaIuRYK74GYHKSOOrxLH0FJr6dl/iBCqSbc4atoW1RGVYoVoSrA\nrok3oeo1dKZsQmNHInXoieqswf1AJKbORApnJSP1jse0P56QV4/z0eswOUrh8+vg0wXw5mgcJ9oR\n4xMRnBFYE/Uc31SP15iG2CcbwduKbtLNMPF9zOcSkBweiGtEECT0e00onYX4Mh0omWNoyMykMceB\n0VSJI7gZ+SYB8yQFoSuA0GBD3G5EXbUT+0f7if7OBWfegJJY1GobwjER/WtNUCqihgQIC9D+QB/8\nvSXSF2wgMeRDqByIvzoSz2gLob33I+79GimqLyEBhj/4HoI/i8CMZsZWvo9jox9zbzc1ztVoX4+H\naOCah+H0XjiyBXSx3duv/HV+IT3hXw1z/yhEA9gjoW4b2Bb9NO10PiycDPZweGQK9Mj4qXFEdxYx\nqwm0cPhEQbssnJXWDq4EmvmOgOiiNdtK5u866by8N0G1Gn1LA9JJBfFwBYL9Hqwzu4g6qJHYFYNZ\nl4F2zkd95AiiXyyl7p6RJBVUIn32JUEMyDkSXsVCn11FdIyNRh8fjeiMQRwZC4NegT3TYUM6TNkD\n9t5g7wtXvwFP3gLGZJgwD+zpoAugpo0klFGLoaoYNfxiJGERZlUkruUqch68hYzEQu787TK62IxF\nnARJD0DjAYifgKCoRMY/iKdiFaFAIa7JJmJ3fUfQn4Y1GM2y8PG0ZBlZYxqIbEvEN7wvyaZDXGv7\nFPanUTnRh9XrIvndWtwr2nHeKyIU/g7awsEyDK55Ed6djBgVgxaXSrOlBHtnOMOHjSH/pa/o1d+C\nmWEUn9jKp/2iMN2yhOjG3USJ1UTXfU/bkBto3d/G9BmjiZDPYsnzE8hroXp+DLRLJFsyUPvuR9yU\nDIoL0VpPaMRsfOHnMSbdjuDOh/GTCAWdSLtOIq4/iXLNIOQfjqNE90I49yKilo6mbCNSfz+SbzNS\n42Garo7B0+MwkZ/txVemI9zdRWBsf9z9TmAracGYsBa14TW0cBfxET3AdxKsyyDfDz3Owyd3w7lr\n4aqHuv8N/Mpf5heifr++oX8kYdFQv+en50IhKC+CDzfA2gLo3QVFrwOgqU1oLTchlC8hGIxEPD8I\noXcUQvi16KSTbGEDlTxBA2tIWpeBlHkVDmMnBlsKTRfbUaNkQo0+lOBOovbLZAjzMa9ZAQfWIage\n4t7ZiKATcYc3Ik8cR4MtmurUcKgI4s6ORkoYjb7eS6xDwhkIIWiNIAdg7GpIvRbyHoLti2Hna2ir\n70LLFNFWPtod0U1vAkcSHdlObMpw/EIzTnESgiARClzPA0vPcvPAj/nj8PXEmj7CwwHahM/A0hsG\nfgNaLXR4QJCRkm6mdqYJfVUXUtgQTBd/THJ8OA+eX83d933Nyxffw9NPX8OiDT8wLbAB166+NIfb\n8UXocG5upH29ivOGdIQYP4hVcLICZt0LO1+ALpHg0NE0p3RhGLIUnV1COn6IgbmRFP+o0ZWVS5Y5\nnue3vMCDtS1MiLARHdtIg/MrtmhH+XTUpTxvG0JtWQWB5jO0jpPA5kTqI6BJ21ECfhoDTSBFQs5c\n5JEPYyy0Ibx6H4GAE61+JUriFBrrWhFiREhPQvQoaI0N2Jr7om9pRVNWYZSuQUKC9BSibG8Q2XoH\nrskGgok6Qjkawek1+FsldC4doYP30hp5kI4pmQTEcpjyOBg7QGuFhHgYL0H+I/Dt9d1R2X7lL/Or\ns8Z/KHu/g7KTYHXApOvB5vxzmqSHoLvb6Pb/Om3IMsyY172vtKIFdoEtGVqeAs9m6LwOYUsAvec4\nlOhgXDxCxxRmhK3jKamc3lzOnIJsDNpzMLMvbIpBX3+UuLz+aMkuhOtbEVtHoWvzwb4/Qng8RGRB\nXBSYPHQmOUjYcZaED/fzyYczKfEM4Pn3fotzXxdnc4L0PpVKe3w9ETWnobcX9mZCrQGqdGhCBErS\nKQI9axAnGdF6XoZm+x4htBj0CehiocXxLdZ2Gy3WAHGaSPP5vdz0rMziMd8gj2on8eQ4BCSiWEIb\nH9HEs0RsjEaoeAOqNdgyCUNkPFEXSYSfrEUwB2Hne7DYgrS7CmuYiRMfTqd2gIEeRxvpXfgEotFJ\n48YlpD9TTdDuJ/i4HaGmAhoMIMfA1Sndc4A3Pw7BJFx3jiHS+DiGIFDqgfI25Jl3MfDeRRy7eABp\nuXacWjjmwvfJ7L2M9PxtKF1buMQiYIhZiJb3LV1f1hHKTqVlikZG/SREpQy1Noa2yBIcXV645Hrw\n14DnE4SMGoIpl6OeexdVGYq4dil5v8li5hsa0hkbSpiM2OmmM/NuwpR7EUKxCAYDCCLCjCdRDVuw\nyg9zyLubQVMOEKowI++NI8qaStWkPIzVNQTGWbCqRozyCATrNGARaCHIuQeyPZB0FvY/A6tSIfUK\nGPRSt03iV/7ML0T9fu0J/63kzu4OJ/nNC/DBvZC3CZQ/BdPWR4E9FVpP/8WfaoIRmhRoKIENv4et\nBWgr34fQJsQYLwwcAvnNaN42xLs/Zsq337LNl4i+/WaY/Hs42xeiRsPIZxCzZiHlrkLUD4O2A5jP\nNcOEOTAgGla9AKPuhNSxuCMMZDxbBG/sRJ/sYVr1Wo7Omc+qh2eS6TuG3q7gWNXcHfpxcidEPwNx\nvwVHXzC2IrmrMR4LINd60J9ei9ioogY+QaeNQzGmoxNykGpLsZxooO67V7n+xRheulVmvMlLz9AM\ndg4+gptuA5GJwRiEHFxzz6DN/yOMGA7eKjqG12PMHYbQTwdpkfCHZaiqRKCvm+K5Cbj6OEhd6yVr\nzjb47mvobCdi0iMYhrdivL2Tuh7xEPcpdIyG4Y+A0g9OXQlGIxj9JLRehmHzNnj2agjWA21wYiuS\n1cDAuRbKttdzYl0VatpoBP83yLV+DIcFTC2TEJ0XI3WGY410UDE8juQP3cjOo4iaFyV5Hl2NEegy\nIkA2QK0R3j8HlnfRDXsDOXM8akUT1X0CtMda8N39PUJLCEGvgr+J8sZvKJ8Tg/jDcfjkaqjIR/jy\nVbSydykomE+/4EFkxYTxmAV/i4uDFzVz3J6L7eMgccY9hG+rQxz4EATzwTAFAkGQTXD2Jrjoarir\nEKblobpPEjiTiN87F0U9/i9qKP8B/Dom/B+KJMOi5+CS28Fogd3fwLNzIa4n5MgQnQm1WyE8+yc/\n07QQdF0HniCE+iP48tHUTLS8eoiWQW+Bjc+jlbnwFhchZ/Ri5Mm9tA1xEIhJwBA9G6bN/u/lCUyB\no4c5PXg2MZbBkPc2hHeCMR+8Z4lX/WiXyAgPz2ZSvIG9t47FJjpY8O5BdBY36tRyhM19EDqOo5YU\nIpo0mLoUpkndq54FAwgv3YzYchw6ziCIepSgH828gC5DDBEVl2Lc8A7bTRN468QDLHsulsiV98Ki\nryMuRiAAACAASURBVIitrMG87hj7F39GP6Zh4QwSUcAc6ju+JE7MJ3CFnYCxiAjfG+BaCVPD0VbG\nUmVNo3zuMFISi8n2Lsa07U3aPxiFe3AZ8ft3Ip76HC0thJIjEVVug+0/wO03g/sMjHgWjveBptu6\nwz0+Mhbq2gm9tIKAKRyjKRKxIQ9W9kMKNJCYIXN0o4ijIpmUmK/A2gbhmbD1UYjLgMG30FyxDsew\nRxAPvkfweCPy9E/wyncSa3cjbM2ArU+AJxWWHAWDEU7fTGh9O22IRPYYSXKbgLBtCagC7VGR2EPN\nRK2t4uRDaVhfiCdy9v0IbfsQEgbSnrgDX00e1q+GYJ72FN6Eu3HXtaNzQLihk8DbIbzNIwnLuhe9\nbATPETDfDNr3gAreImjeBFGzUXUqwZEZhIJ5GI5uRQqbCGEV0KO7LmleL9qp44hD/4c57v8b+dVZ\n4z+YoA+iksAWDjN+A49/B1NvgiNN8NUqqC//6fWBZjj/LLQ9hpA5C2FcAoxMQZh5Oc1JTnwBFTVn\nPoErMznz/i3II2ehvyoWYf7dzNy/CX2gBNZOhNIf/jzGp2mw6jlobYErHyPt9C448SYMboZ0oMEN\n3lz4YxtCfpCuUdewfuFViBaBS75Zgb68gFBxGnKwESnehzriVoTTl0Ko66fBYHR6eORTeGghLOyH\neKkLXcJ2VEMDBr8R3dYvcNXF8XrRCzz/upfIPUtg2mNgtCKER2Cu6mAid1DMAapUG+7AF0Tv/RSt\nYT/e5B4oTomIEfsRXlgMbgMt0jT2jcok1KOFUQVH4d4UhMY1NF9yFo8fdK2N0PlHNFlDswiIrTFE\nHipEnfItWsk8OP572JcDtR/DThEcTrgqEt79EmHAHHb1mMNjt6ZyNCsBtjSAEE2MU8fEHTcRLHwS\nVbOAUg2dKsRq8Nl8Autfp3milbjdxzHf9DChxhg6H1pOR4GIHAxB713QYga5AfQylG+gqqKRTxf1\nxZhgx5AYS18tCsO8VaipOYg2L+0hB6a9VfS5v5BmZx7Ccw/Cxn2wdTm1AT05721FnnYN/l3388aU\nyahWGVUfRVpwHqBDsjbTYn4PtnwEwSJoru0OhypHQtpSNL2eQPs9BIO/QyctxmQ6hdx3G9TdAycu\nhfLbwbUD9eFJaMfzu6tU1xnUz/ujfTQULf/j7jr2vxnj37D9E/m1J/z3sP4FmPX4Ty3PiRnQLIHZ\nBdY/OTW4z8P5RyDQhnAiGSqfhNsb4IyJk04j2xMq6TErlamvdtBg3IW12UTWdxUIl1wL/mKUZQeR\nHnkHjiyBkmpQ3oWyYug5DdY9B/0mweDL4PXbwabCjAfg/CjY+Uh3WMwUC8LocFpHj+ezKBfTY26k\nquIBOFmMMGAwgdJs5JAXws8j9H0EbfcXCD0WQtlOOPpB9zMIIhiCYCiFGjskPA0pUejrhuAeqHD3\n8ZeI6vKwcvIWtlSfJ3PyMwhhkQBoDgcKEnp0jNznp73pN7TnOjhjmg+5ifjFj0heGUKITMD30G2c\nqn0ayb+RYWcC6Pe3wRU2oi4twXjwONpBAcfAw4iHgwQSDeiMftQ4jZCvieCIMEQJRGRkh4pgb0FQ\nSmFeJPgiICoCXI8gSclMM+eS+8O3tEXG0JzaE0tTE95Jl+IwVZP++31QXwC6JGj7AQQNTdNTlnWA\nHqc6EA69DlHpmBZEE9jYE3v2MnzB69DlxMDut6BXFrT9DvW5z9l390QiAnocFz2HWnETBurAvB1l\nwndUWtbRZ2UxrpMK7PehFt1G69WTcH7yMmz7hpxt4ShJXqTVr7Bq4uWUOqOIr68n6tOeSB13IyWn\noJS5UG+vpz39DsKqkxGU9dByHA1Q9qxH3LgEXaMZ4bLbwLQGTBY05TPU8T60FkD5Bq36XdSRMlpE\nLYFVS9HcbgxuN4ERuehzsv+/RUf/1/ILUb9fSDH+wzi5AeIyYdg8OLKhO3JVeByc+h4yZUhLhuNz\nUVp344sMYv5iOML8GyA5H6p/T1VbD471m0UERqYda8Zr6SRyUy1SbyfCVXMhOhntVWjOP0e0dTRC\n75FwTgIhAzbcC+oncPtHUHiM0BdLkMYPI2b3e/DpE3DSDZWRMKYv7eZGOkSZbbEK04PfEanVoUUU\n0zFHj16rQZdSha/DjXe4TCD+bgxRKdgtsUi2DEgd1/2sSh24rgfhXeh4DdRWqN+FEDWdhu+2c92E\np8lpNWGY+iExHSsoXHEfWSmTYcI8REmGQD5svhQh7wxh/S4mb+0ulPjPyaiQaQ3rSVLnCc7mz6c5\nvo7slWXYlU6I6gs1IjS1csx1K6NGfY7J1gmddkgdjCFyPBQdJhTcin55CGny5ag9v0RtT0doikCo\nOA1KPMSMhiOHITYWwm1wdgEUx+Kob8Bx9Rnw3ISyeTVHcp2Y81ViDi8hzHeEsJM54BwDw4qouzIT\n28H9GI020Lkg7wsoyqLr7AZMF0v4/3AO3aDxGONmwahFcPRuintFE+8VGLxuOYw8hubMIGTqia4j\nhLJvAGltCrIlmsj7Fbytc9Ddno/4iAuGz4PCQwiBWjSiocZEi7eRu1ZuRfIo6HqFEZrehfJ+K4bq\nVvTFXxBQHsKfUY4WPIscPwhFvA3dvKcQzUugYypMugLF+wa0rkFrDuA2LEDfthN9WT1t9EBs9iPW\nOGgfM4PGQRH0VqZgk/v+O1vXv45fyHDEBYuwIAhTgdfofqSPNE174f9Ivxp4EBCATuA2TdNOXGi+\n/1ZEGYr2wUXzIX0QLL0cSgvQkoIIMSFo+AK0CMT2VPymIrpePI1TciC07WJH9Qj82QLzj/ZCnDYf\noWMeVmsSyqkyxJUl0H4Slt6J1wjeXU1oBbMRonvB4lVwUxbUaDDEAx8/CMNn4UuoxPz69+gDCoxK\ngTdfgWMH0JobWD7LTK37HLd++wFRdS7oXEmiw4KoqBgv+wP1WSFsc27HnCxj7eyJcH4qQtsHUH6k\nexjiludBuguiPwCpB1z+GeRfAkok2HrQZ+gCunR6WnN/h7Xicwbai7giaj4r86ajRb2HrPZEzqqB\nE31g9iM0uNyU37KMkXviaNyWQvugdDoyRmMzHyezKRXBVAwdMmwugqQBUH+IPuoGaAqDWA/EtXfH\n6TBcg3r0R9ovysE/WiBBHozYtAnxXArYR0LqpZA2BU79DsoEqMuFUffDqTuhYxXMnQgn7oND3yMN\nimX0lja0H7+ldvB4tk0ZhG/eUHLOVJBiK6ZNV0nvxHY4IoIP2H8CrfgcUY5O2n2zsWbOpH3uXKRX\nr0d37gNavCUcvn0u+koZy8hJIJzCmzCcztbNiE0CXQMGcHbHRKbrvsYQnoVh8R+wtbYRXD6Yjq9X\nY7v9GgQ36PK30ZkUR78WI1m9JAhmQuW3KPmRFA8yk7pwDeY+F6M//hahndV0Td9CwBiPVdyOJCRC\nTgbEtOPrWkB7Ui32uhYaIq/EcVDBWOQCczKRSUlQexjhUAzOqbPp4ckES9i/u3X967hA9fuftO/n\nckFjwoIgSMBbwFQgC1ggCML/ucZKKTBG07R+wNPABxeS578EVxEc+fKvLyF+9RsQntS9Hx4Hz++E\n25agmiSUqmQ4swcK/Aj3HUTwTUfviqOufR7LbUNJDdMz89vD6MfMRn7nYaSKs0g3PY4QY0XdsQNe\neA6mPQSjn8ExOQct6nnoOgLBKgjLhphU2FcCcVXgvw951Ul8koT3Uhv03IDGY2j9Pia/7RsCcg2X\nbzpGWISdJs1B048agUoL1Ghor95AYN8b6EZaMK5wYmg7iTxqEkqlC9ROcPwAa/rDijo4cgrcTXBy\nIWqwlkBOIqFIMxxYTLDiDqyRHkKOBxDbPkRTfbQPy0Z+/yzCZwXIo8rQjDJkDaW9uISBD15FZOYw\n+ky/lUzDGErbm4hcu4WulVGoqZlo2T1ghgiDT0Oymc7waAjrAfY7Ies8nBoN04ehXp2OwfkkwtRH\nIXcq9Lwc5q6HrGnQHIR3fwtLNoJOg5794cvb6azaTEBMAv3NkHcS6vxQnoB2YBfK1GwSckdw2Wk3\nl284giezlt2Zo4g7HY1o0GDai6DqIN9LV6oBuUbBWZiM6eoriVg9DznqC9SmbziWMZx9xt6k+09D\noAG104Du+08Iy69BH9uGs7mOhMh93ePmtcUgSkgRERj6ZyHqZZo+PYJy6QMEn/yczQvGMvh8BcKb\neQj7SqDdjr60g4hSM1W9E7vrX+AMkj6Avfg6jJvsdDISr/YiONPArSEckzgmX4bkCydlYx72llLE\niSHEWU+BuxliFZiZBC8s/P+XAMOFLvT5c7TvZ3GhhrlhQLGmaeWapgWBr4GfmPA1TTugaVr7nw4P\nAYkXmOc/n+hecPgzeGEgtFb99/SEbKg59edjnQHqTyGkTqL6tjS0ns/C1n0ELgvDnLeZsE+rif2k\nmLlfbya95ChURsPi4dC/P0REQeU3yNMmElzyIFrTLqjLw/jG1VhTw5CSp4AhB47MhkGZYLfAJydg\ncTH0egn1xizq3x2MPCgE8ZcibFXAOp5eFYdZXLeMAbMvQhwyC/dFsUjxZjxVOvYvHUPLXQ6cxkak\nnuH4auLgTBeCfTXa+UoYeilsb4NeXhguQM1yeDQR7dPVhNq6CHZ9hVrxBX5gr3MMhtoozhlGcSZh\nOR3qOD7MXkzDki8RdDJClALyVwSWDKHqwycZNFpC8hXQHPsESa4aWsZ0oh85AdNICf/pcLzySbzF\no1HXp8J3KhHRpZDyMWS8hrusk6plz6FNG4wW7UET0wGBZt8WNMNMECVIGQKOgdBphamXwygX7FsC\n1ZtQ9G62PxRBYcGdaMePgc0AVgv+N65AuSQF8l5Eq9qHkHOUfraJzLC+z6viZZS6h0HUFeDtgzpI\nj5bbQtOSFPwrNtDSdAw5XoKuOziYnMv5pCuYKA5hQJ/30MQyPCv6EJo2C3WKH39iNLaI91FLrd2u\n4X4XtFRC7Vpoysc62I7zNxMJPH4RNe/Np8/ZfOQ5S1Df+wPaJBuaZkNIGUxMs5m471dBwU4EMYj4\nzQCEWh0GSythKxpQGl7D27QKrXoPvsQi+tQOpzMqrvtdnqyBM2GwYxOUl6PpZ0DxaUjL/u/1/H87\nF+as8T9q38/lQkU4AfivKlX9p3N/jRuBDReY57+G2S+htjTjfX48XTs/+WmaztA9V7ixrPvY04ZW\nvhdm3Yz9kBW3fyOMzaTlioH47T0IKQHah6ViOLULiqug7hxawxmC6s34xx2kbWshjb9fC62VaFV+\n+PYV2vwRiDl18KYTtdOFtiEOcgtgUDrYzHBuG3jDMHtziNp/Gr9qwz3pGfakZeArlbCNfhYOXws6\nO2rVF7iT9NjvuRj/uQaM+XYEfSSWjlaCPVvwdTWj1SYj1L+KOOAMbfZ4tMd3gusu2GIC51q4IgCL\nZiIZr6Pz0ylUrKhFUnSMFBXMEen0aemimH3ktzoo77TS5NDAEkD7SIZKkeIaPQMG9EM4omI/nIvk\nVdEiS4glA58QRBJOY7rtRXT9eqMPyYilJ1Fj/YhGFU2fwfmlS9k1eASOTBF1zC7ERh3lPiNPt6fw\nR0FA0I8GTye8fAecPgiPLQNjPRR1QcsB6CXgmL6ctPVB3OlOWhLNKH7QZi4kaFyDFjqCNiQE0/zI\n5T6MVVnQWsW9az/gZW0+ynN3wp1vEgqPwJyuUjXhd6x/sjem+2bhc/1IHsc47uhJpC/ETIbiLd5G\nc1FP2i9qosKTSqHlJor9qezRPqB8kMY6yz5Kh8fC6hnw3myU8+1g7EDe/gf0v/+Rc80JlO93Qnw/\nNK0AzHUwxQbT5yHMvIOwz9+E+8ZDWRfctAROiBD3CqLZiXVrE8ayE2j+AxhL/CQ11uAy6yB0DuKj\noEKFdcfQ2nsjKD+AcQjc9vK/uoX9+7mw2RF/q/b9VS50TPhnz2ERBGE8sAgYeYF5/mtI7If4dBHq\no2lI224jVHEXctwEGP8VCHooPQzNlRCVCi8MQDGJdFQ8hP1IHS3WSAxKPOiiKZ/clw6aUIzV5Axv\nIGxPJ9pUCTXXieoIEni6DaW2lfBxTqT6OoJtDvQ3OQi9V4HY4YdicEvFtF+toskyTGmA4NXIYb3Q\nhYWjM+ZTK45BJ5xgGe8wtfd4vLW3Y+r5Gbz9Kox+CU/LmzSOdaALTSRm2S7UW9Zhf0VBlHTonY/i\nG3yE5vhDROhUNOtpvKuuxPJEBbqcsVC2Bzb8DnWwlxCb8SZuwdk7RIxfRtjrRH4qSGhsOobDx2n6\n4EeG9QyxOG4iaY8OAHMLVGp4c8yETygnasARMNmR9qwm+vXv0dwr6TNyEV1yGaawgdBahFARjVie\nD7c8hii+i0nXQrBiNa17fiDtnnuwjYslmPEWUo2VZxzNVKgGXvXugK8OQ2El3PQ0pPeDt+ZAeR5I\nOohOhVHXg+tKep1LQ8v9hq62bDa/PJ4Sq58bGrvQr3UQGNSGzqVHDE+DmrlQnokjq4gH3niNbcOH\nM+Xsa8jTW6B5AIM+XUmO3YI4xoR/lYHdzw+hzWimPqwK79HbifOXo0QkEKc2EH24CI6cIm9UDjli\nBsldy3FGVRGm+KHzPGrGRBocZ4gZvAl5z2s0bXqEj+bez8IX3kdduxKGbgbFiVCaBdqTYL4P7nkf\najfBjg9QFm1Ds6xGK1yFzukBl4AW9BOyCmiVMuqJd4k2+dASMxB6NME2J9x4J9quDxFdCiSUQOiv\nDL39b+bCDHP/sPl7FyrCNUDSfzlOovuL8BMEQegHfAhM1TSt9a/d7Ior/rwqRZ8+fcjKyrrA4v1l\n9u37C3F//6ur8Z8wW+oJ3DWD1O01ZJw7hKftBP6ayTg6qgnz1LJjyybkrWsZ01oBnTJtNVm45sai\n96uYw/PgbBh+uZx+JyqQB3sQ9wehUUN3sZ/SfXqiVrVgsMiIqT7OxeZSNew6Jux6juBhF0JIoOpU\nGpHldejyQ7hX6NEEgbi+HThuqaZxXSmCGCCYIkF6J55BOi4PrcKS/y1duY1YrhpJS1cG/t/Owdrf\nj1hhZk2BwCXhHSTPDxFcI9JsSqF90xr2JWYw+YUWDi0KY3BOG7ZP9Gw5+BadLakomkxUbi/S5P3E\ntAQJaOEg+XHpo3EYajg0cSj+plP0inOwYHFPEqKGIeb5MIbqKA2NwjK/DktKCWHHRJqvG0P5hFyC\nFgNDxwbpbI9AOvcpxmg3gboK2tYUIDX7CY02E1S+x1DsoM0s0PzulTTNuYeg7Kb4yHdYHEHucN5M\n/4JC/nDuafT1lbhq0tg+6lEiDq1iwPJ52Fpc1IcNwNjRzgHnb7DvrmWkzYOu5DCdD+VisAj02F9J\nZMZrbAoMZ8zwPegVM23nHRQbhlFtuZWpkY9hs7tJHO9h7YArEBtKmJgawH2mAqmhBK1DRI7xsn3m\nZYhlRu69+30CVhlbvy5kT5AOXTSBeIF11/ZBNU0m+bQZt6mGxpVmhCETGDzsQ7Q0OwerepEeXs6O\nvD1EeOIZ2/IlS0ur+GDcAkZ9eSdSlY/m1nQKIoYRH6PD5t9C9P43sHQ0Eeilp9qwA2erD88AA3Gt\nPvaMmMEQeRP2r7z4vUHcapCShSlkNBUTFmjF3TuCho4VmCs7kdoyCU8+RelzCynotwBFr+/+2P+j\n2tU/iDNnzlBYWPiPvemFqd/P0r6fg6BdwIRsQRBk4BwwEagFDgMLNE0r/C/XJAPbgWs0TTv4f7mX\ndiFl+VtYvnw5Vy1YALtXwPbPoPIMzH8MEnt3O2GEx4Oso047yyae5arWr9CfvBLP2XY6SitxOC2Y\nEuOhugBc5SBJ0GsMWuIAVNdrCGUybePDaR0qU6Drx4jKszh/7ED/WQda7wAttXaMTj+mYBAxGEK4\noS90laA1aNAVhnubFy02DGvmZYjfvI0WZkK4Zx6EmsF1HrIUiPBAj/UUqjXsjgwx/Nxz5PT4ACXM\nQFfBzYQ9e6p74UtEyIoiFNcbISqRoP57dBk26m5oxvmHL7GOj2ZJ8AC3LHyMsBscWNISUDefRej0\nUzU+hZWj7iFLGshkTxBd40uwKxxIghlZaHsfJjgql4/bBtB+uo2FO74g0tqB6PMRiMrEMG4xjVVv\nQGQpkb5chIJ6qBMgrQUtsR9CphuttJiymATsP9YS0SCgPvggqrwFed0+QpUB8tYo9P2tiM0VBR0d\nKNYAL9/wOLni5Yx+43HIKgC5FtKGQ1I9mM7CbidELIUNS2HgTAh5oWobCFH49KfRhvZC87hRNQst\nPZqxtXoQAxpNjkTCE62Icjtemwx1TbQft3I+PpvO6EiCpjDm1p/G9M4xWJgFHXupSLmcjY3R3HDj\nMtQeKZhvnQclT0HcldSWBtk9wchFEVNJ7XU9mqahNRyj/YPZOHOTYdg7qBXv0GXehdLpxdp3OztK\nvmHM7neQDYmsK47nkik/IB4xoSXdj2iLgGPrwLsbIkU0YyeNox0EbcnE7r0WLeExaLaAMxXF7MWw\nxQlmPfx2K2c6r6P3Nz4I20koIkhbuBHDFg/Wvg+iHi1FaFhG6EhfdC++jjR06N9lpFu+fDlXXXXV\nP7q5/kUEQUDTtL97IrMgCJqW9zdcP4Sf5PdztO/nckHfAk3TQoIg3An8SHfn/mNN0woFQbj1T+nv\nA08ATuDdP03+DmqaNuxC8v2HIAgwZh5EJHQLsSMGyk7A4R+gpRaUEEIChI+T8O4eh15uwGyow5gY\nR2d9Hc2tDhLVGIiLgY4DYN2GUFWGZk9BvSQHR30ZklJKlH4GGuNwZX2JbgEI1X6MiSas29vonJFK\n7Rw9qbsqkKt8iLEOiNHh39aC0+5GcH2ElhML0xfCJXdA2StQUAIjX4S2ZKiootfw6fRGZJ/8HqK/\nCLFpOLqyIOKoK2HzahSnGeUWPdqZNhpzKhHVSKJDqcQ+WIB/8xy0Urg7yY7noXhsZgmKT6FNvY3g\nt19i3qFwy3AjYVImeE9DXQws/AR2vwPGwQjhM9G7E/jN0X14zp9H19UBZomFT3zHwrONjDr6Fga5\nGPNZC4K1ipCvCqnPOIQfavE+NQlPrzoiyotJXV1BV5LE6R9CiPdvIHHxIYyFiTQ0FdHvBh3m6D4w\nzEf9/kQemPo4vztTTdbIeGjcAC0ipBlhTy2q1oUY3wsuegKWPQoxKRARA+YK8DXD+FzUwvN40n0c\nc/bEZ5DpWRDA0z8cx/4I9vfoS73ZSP82NzbBhWKwYx0nMkqVsOb/QNOwy3m2xzPc4Z9L7PYkmuVE\nfsiM5+KGEH88fDs3WJ4C105C6YvZ1XMUnZ4WLntoGYb41bDAjVC/lbrPG7CGGgiMvRG9vT9iqBfi\nuTyCPZIIhO6jwZGFLuBAE2rpMqcgfiJABAj73oRxvWB6Cih3oZ19HjSwSNPpai/G53kaVdEzd8JX\nPOb/PYPsO6H4cQhVwuqR6LNrCWRaMTiG40ruhePDZVhqPLjHvof+sruRNg3HoMtD+O43EPkqZM/s\n/ncYrAFdwt++ivh/Ahegfn9N+/6ee11QT/gfyb+8J/wzv9jb1XeY0HopNFah1R+CXR8j9BqGd8wi\nTCseg1Qr6NvAfRi0SLTjzWhqAAIK3oWJlOSMxJuvY9jpbLTY7+naeAJPlg01xUZkYyeUdRAUJc7d\nmELGYx2Ysm+h6fNviNKdAyWAUgVCrz4IT1+H6Pkd1A6DXY1Q64LlpyC2BwDrz17HVFMP1ORRtKs3\nYm70oe8IIAXcqEYBcb0ezecHgwnB6UeLiqBtvxuj0oWcPYB3B03n7lNvQSgRejwFPQfBhu9g0hWQ\nmIqGirD3adj/CUSPAUc+6JqgOBEGPwTbH8VzpBbmDUaedYo15vcZvukp5FATUXktSE4NX6+Z+M0e\nHBVxaF99he/eMIxfN8LkMILnzQhn6ik4Fk3yay0UPQh9b53O7qgxzIo/jqpv5cd6MyMPbyDMEgs2\nKygeaCtBu0jEq4uHMTdgrs0gsOYxAuOS0UU70ZOEUNmG399F2cS7qD76IuY0C5YaO/ExiZQVbuV0\nagpaVCxeYzaFaishRc9lOo2xgVnoG25AiP6KkGsEaqSdHVIO31XP4PV37uGTW+9ggVCJrmMV7v1x\ntF/xGGWug+THyoR5QhxMGYrV7+WKtRuYVGpEeuCPKAdupOi6r5HSR5H+3v0I5Rtokwoxyi1oCWGE\n2luxvlMFHZ0UR6TR01uMYAFGJyCcESG5L8Tp0GIL4WQVyrq+CBeV4ylsRbbF4nuugw2heewuu5aX\nTmwhbOJCtJZPKbN8jb5Kw2ZqQSYdy2dHIFpEjelF62U1iLITx3cSgq8Vbi6H2puhaw8kvA2On7d4\n7X9cT/jk33B9DheU3/+NXz3mANpbofA4nDkGky+DpFQANE1BE5oJOlYhhy+Cqv0w/WE01z6M749H\n08dA7+FQXwJ6AaHDBxNeJ2BajK4IDPn19D22goqByQQiNmLYE4mtCGxX6lB39Ec4vwmtXsMfYSDq\nsxbqZ5qJ27kbMTkaLq2EhkTE4myEm+9GSDkLwo9wfAOE1qHZg9BZiOJ/GdW/g/72Vnyyiqx0IKuJ\nCDWNhOhJMLULXXEpgZkTkULnEUKPUfb8jehrmtAJKgZbFHLv/iR1KlRd9CNJXQ9BWyus/QNUb4QV\nGyBhAFr7SZotPsLNCYgpe+FHHQz3QHgjbLsTIqIxfVpI++23IYRdyaVjN9NsChDe92V8EddhapCR\nqg/jGxFPfZ82YvU9Mb5ShnpDOM3jE4i6YhfC+jvJefUZWs9mExYbonZHEGY2oYx7jtDGZ+gxZBtS\now0iZ8DMJ0BQYc27dA36AF90G+H6u6BXJNrdgwhKJ2kXqqilDPO6AipuHUICuxl44jyW+LsRCt7k\n4Kx5lPTtg6nBzIikARiJoMjnoqb2FCnpj2LUpRDUTiNvWoBuxHIw5ZLe1cjCt+fz/dwrcafn8nIg\nmuimGOSxTdTZzpCgepl1+BBRYSHiLSrZ9iwy9UaEjAnwyEVI9yzBeH0ellAG1XfcSeKXB6n2BVJi\nNAAAIABJREFUv0mf05/gV6oxem9D67cCociAKcULJhFBrwPfRLh3Kbw5ADwhhIQ3oekzpHFFUNuC\n4ZSA2LMRzZPAJc5J9LK+QmF9J2310Uypf47WftmEBukYkgdS+3mI0qPFpCJMWI7drqJU3Isq5CNa\njQhn54DNBInvg/3vmnX1n8EvRP1+IcX4N+OqhR+/g+8/g4JDIMt/EuBSuCEMbd8hQo6vkc6WoFyc\niUgx4mwVjlWCqwrCBKhWYXkAIfVODPNiUQfWonqtCFYPshZEammH834474G3FYg7DoZUtNEOlIfC\niDd8RpVazfmaK0kzlUKLSODi/ki6VgSDCynmdij4EVathzc30dL+ODp5AaYqE7I3kYrabML5AUNC\nOb40N7rCMiTZiBD3NlrDrQhiI5JwmIPf3EvToUaCrTB6zf1Y2ldDazVTjrbjOTkXauthRjNctR+K\ne8PmxdDegRjqie3IeroyNCw+D3RIaK7xSE27QK9A/2sRwpOx3PckLbm5hD3xGLHDulCXrELKEFAG\nKXj3BInwn6ImJ5zqkILugV7orTosa0og+UVQFGo/XoTjmghOXTeWUcO2E/3EMboOvEnRy70x+axY\ndKVoje9xpjyC3hs/QMusQVMMhFXegJjeHbPC1xnktP8sQaWT3lubiH3uDFmm+Sh6D6EDrYjl7yDs\nKCbrwWfJECyEf7uWTlKo4FpSTV1kWGuI0J5DCzUQFNrRbHl4jW9jKjlPzxe+IeViE3H9f8sgoRPD\n8e9x2gfzZZqLwTXnmVy7C5vRCxYfV/gvpU0241GPYMxyInXlwtKPiYusxND8AR36SMrGZ1O79Tb6\nKF0YI79BizmJsLELweonMqIVLSCA7jHwfQ1bx8K8VLjdBesfgNkehHoFt70nxocFtAMK+sUxmPou\nYWhsOJr+KO66o+zsPRrJFkfStkqkt32oV8mQY8E/SMaUPKjbH8E3BnSHIDYajmyHK06D/e/yPfjP\n4Z+8dtzP5VcRBujVF5a8Bfc91x2Ux2xBKHoMwflbZGE9QuY0Qgd3oUuYiHgoCA1NcPkfQHkZHDmw\ncyesqIVmHdrcbOqGzca55lX0ZWNouqmU8N3nKeg1lAHjAgj+AoRBIYQoCaFjKBxdg9bgRdg4lBS5\ngWiXj8bUFE5OyCUQqiHbchaz7jNMxwzw0WOQW474Ri5hsSZO3xZPdIub2NMn6fn+SZQ7NDi8B3Ho\nJag9+iCnPoKmT0RrSQXrBFwuN43fFzP0JglTUhh2TxVkLAXbR1iDe1g5/vfMP1qAPvQjwts9UCNy\n8SbeR/DkZtTasxjMIv54icp1VtJNKrLdAI1hENLB56/AkXXIV63FtvQZfF98jGmoFXHSTjRjPMqw\nuUj99eiqJVK0HE4OfZ7UfSXYTItgzBCwzIb1t5GYdZbV1XNJmeIi4kg6NlMx7v7RCN93YmiKofzi\n2ewNNzGw+DiC0YaYD5ZaBffm1fhGFBA27zpkTwIDC7qw+I3w/eru2B71LciTopFbffgrgnRW6dEs\nOsI/20TR8MPA48TgJSB0YXePRuIcmt2JoSYWpXcjuq2rYNdhOh/vg76jFIPxWQ5hYupFdjx0csOm\n05gi/IjnF8KN90PVIoT2IpwNX6HUNtChfIkxZMRoS0c6HYQHPyZMF4207nWa5r5DKFtDd3QBQkoI\nIbwTZFBazbT5w4jtehPCgxAfDoZ8eHYR3PUtaCPQMo+h7PMhT3oAPG+hTXsCdfFcuKUOd7aRhphw\nUg39We6aR8dkibtm9se8ZRD2mkKE8jDYvxQGnYGTh2BWPvgbwfItFH8BQ5b+u1vmP5dfiPr9Qorx\nC6B8P0RlQPVxKNkJ1eugYyn6y6/HG9OfQ/ExZI4aTfKe12HOMtj8PHhEyNsNOysgdQjqkGr8STU4\ny1209Y7H3V8k5WwxmAI06gxoci2CrIM2L4LYCrqNSG4/oXOpkH2GMkt/SiwRFIWnsuD9TVisEXQ2\nOSiKb8ApLiZugQedN4Rq7ETXHCD1cw/eWAHVlYwxqQxjYwhaZaSjG1C7wsBxGqFvfxTTZE7PvA9v\nShyDnuiLoeQoWkgimO5Al3IFqONQar5k9NoPkBtO09aajumKIP58FZM9D3O8G8FZB74QhjEb2JOy\nDGXRj+REFsLFT0DiONA5QDoK/vvQ7p2CbrKM0tqM1OVDGPUhen0Cfs+XcHIvwpl3MP3+Ouqzm5CP\nHUE/4FJEu4vdwwbiqshiZtgK5OYAulMD2XPdHNL7BxmwLhFXZm82Va/EancT++YPNNxhxrwMTEIs\nxlQzslGEI2uwhHaBXusetlACMGcsRG8nUFZAx3IDUr90dF8PwJddT5HpZgxEE8fdmJuHUOfcRZ11\nBenbZiLMPASyhu6daKS6EN530vDvCREc/UeOcIopTMOGglmrQtFWoZUChg1wYBToG2FdL/D2RQpr\nwOFqwzMuE6XjAN4EC9aPl8IbeSj9v6Tf/C+p/u2rxKS3YzncDsEqtLAuDNVeSuU0YrNOQZcV1nVB\n4kRI2wmrh4P3JqrXniV61k6oWwOnmxBKFyD+P+y9d3Ac5brt/evuyUkjjXKOlixZknPOOWFswGQD\nBpPD3uQcTLLJG2zAJAPGgDE2tgEbnHOOsmUrWcnKoxwmT3ffP7S/e+536qtT+9TdG/jOZlXNH9M1\nVfNUT69V7/vM8651pZ+OdD0XJmTQ57sKHEXVPGV+k/boWN4aeow+jnu4fMVfsCxogtrnYacNrnui\nN0sQIHI8tJz6fXj4W+IPon5/+gm318BX18DyUbB2EbRVwqAFMOgaiApHTyfKiW8ZaxY4VfozDdev\ngdiBUH4Apj0L+6vALRFMa6VjUTSGmh4MtYcRHGFYnEfA6UZTL2KTXTSHRyA0aBAEM/y1DsT+uPpm\nUndSx85+r7A6fxYfXHsbCck52MMNaEelENbkJH9vOaZ+sziafzvHYkfTobWi2k2EtJsIMY6ibZKd\nYI8RzS4RWpIQN3uQXd1w9Cu8L0+k7uO3iL8qneg5Vuqc7TQMjSBgUyk17MTjfBOkKNS6WEJC+/LR\nVfdw8YFXME47gP0+O/o7FyOOexahU0awK2i/f5lx/Z6ncfkElAIn1HwIlSvAYkM1jcMdMhWh9UnM\njhIkXwco4+C5a+B8HUtd41mSuYCue/cgS0YSS9IoneymwbqLlw+fpKZSYl5nCfqyZASdHffQLCJj\nD5Dy6Q7UU3s4PMfH6KGXM+qtQqTl2TiaZmJ84SKafgvQzXoIsdQOCVeAPA16JoA+HSbEEoyw0f7s\nWVrXmvGtNON5U0PT4BoajdHENyaRIW/AwnxErwbj3z6nLbyB7ggrHHwecVkbwfEj8JtsVJ4xIHkP\n0ij9lXDVRBhRCP5f0KpRGMtiEZ1mlOgylB0zUX0ueOwN1Dc+QQnVI+j0mBskJLdI60QTtffm0vFa\nDup+O4ZzhSSnO2l+/zydTTIMWYjQptIyL5Gz/fJQrQZo7gGNGX7ZBz/pYbUVtfkjbDHL0Q19DdUU\nipruRg3pJJCh4OwfRtb2akIbhyEbY+m5rR/ipApeLKzm6g+eRYoPRWkOouaPhqkCBAsh4PoPXoQP\n/N0o+Zvhz2SN3xdKWxver1ejHPoarXQaggbkrg7kbT+hSHtACGDJ8SOdr8Tj9WEf/znDEobwkNrO\nR61ObM1tsG4FNIcSGK7gmmcjtKEAhnyPcvoGpH6RhB6pZeeiiZiCRrQ9Erv7RXL9mwWQcx3Iu6D8\nGN6gSnSKkbON9SjWgdze6WfqiZehjwUa68ERgrDofSKiBhGhC8PfcwstNhty4140mVMw+vU4qz0w\nPZTwUdfBjjqkCyWI3d20CU2UxBpofXoCEQ21JF8sIs9ZTbPJQfC8QGpMNUVJawkWlxOWNpu44auo\nEg6Tce4YdGWBXAKudyhW7yKLIJQmQE85YdV5pIhxdGXHEpr9OJxbjNJRTlB/DmX8YkxlkxBsv4I7\nHK5fDXGPgH4hr3SL/Cy9wlRzMoM8Y3hn+H1oW2ZwPsRNpiecq1kBSgZqdioqW2mR9hF9SKJnSi7n\n49oY2PUJjgIZ5b3RmIS/ounvgbQ0MF4Om1+FnBjY/B4MkCBsKEpHALmmE7luM+YMBekVG94QL2XB\nTmo7E5n7RRn6tP4wU+odMopLIOyUgb6PnqFn6gBsXxyAh03I2TkY3/iR3G9cdCz+G/HyPaSrh5GD\n21Dl42h0t/U+VJoMSO5ETDqK3H0B5fQo8DbTNFCHptZCFMNhcB78UoJ/aCHFT0ZhbDqNI8eBNf8G\nYmdtwe+bBDMehZQsbPrTzDm3Hv9ZDTpFQvBWQlw4xDtQSzeitApY4iT4dRhqnA110GSE6i1odDKZ\nJ7Oh5BfUYICOR+vxSz8RzhHEuREY4vsiV9+GkipB5X7UrCcR+j0Hou73pORvDvV/ipXl/x8her14\nPv0U/+7dSEE/6g3LEM/vQbtzL3pnA+KgRIT8bvB7MFkiCWS1gFhFFIO5X/6Fxe0Kr7bq0V36la5J\nSQRnDyIUI3KigDNxCUaXnpAvPbRX2bloSmJK425inB6qgqMhXQt92qB1AWrAx5mZt1A2OMicX35g\nTnMxId2AJxcmPwvH10J+Bbj3Q/ku8Leia9lPbJuMEudHFfZAzH2Y79tF5fpsYrYdxdvVSvXAOI5d\n1RfzMTcTm0MYoZ8P/h+hpww1P5tQYxmNN+ShtLpJfKWa2reCxOz5mhNps8kYdBc9OongZ9ORF6wk\n2H0fWVtngBLaO5Lub4DUEWR011I+wIpatwXtuLlYNi5DG5qKbsurYNPAIT1kT0b+diFS2lkQoqHY\nwtT2xRR6RL5NG8UVZQ7YtpJnbzczzvEkaGLgmgMIqorUto3ozhMET79MyzQ/cfIDxL99FNcdHRh8\nc9AUroHSInjxOOToQbGA9zR0aGHqIuririK44DKic8MxhF1C1gvoQpPpUetIKk5k5NbDCIMX9k5Z\nAGpbK7S1wrSJ2JbvxrL/EKz+Drnlfvx3fIk+NgHcFeyRWpmsK0GQ16N0rEbyzYbWEnC7EeJyETR3\n0mFficX1DRqDDN4uIhtCOHpFKu7znaT0/YRA3SgOD72R0ZrZxMXGogg+uq07aXVE4zd9hpZt2Efd\njXHDJSpvSaKNUCyt7cT3fZXofdtQW7dATBCigITx0PdXxMBBOHUTHpsVozwLNGcgdDL+KfMw7DtI\nSPoPiMGLEG0EhxXR8QwYX0U5mkDQ6UWf9w8IsCqD+yKYM/915PwNIf9B1O8PUsZvC8VgwPzYY5gf\newz1uREIV1wJt9zZG9i582dItsDGaRCIR3/Oi08EpfIGekbfznCbl9DtuXR59ITn9BAc7CUQUUl3\nbTOFebMJVp9meFkX4lERU6yGRQc7CeaMQvb/wIgfWuCBxfDLV9Bsgbzr2T8jHVOHn8jobDRNu8E1\nEeLHQuQkmDUJlr0EyXdDWDh0NMLaEfDgNtTK5Ti1hYS8W4jxihtwOi2cuL+Bpg4rhqIaLluxE658\nlfMTW9B/+yw90+4j6uqluLXVuI7MIbniApohy1F/uBbx5WuonOEl9eIp7JElaDuduHXdXDrwBJ/F\nPs7Y4U3M+/lv4G6ERAMUlsGbX5BY+RK1F48QYU9GsKZCZw1IMhjeBvvnMOgBArkzEQ0bEEp6wPca\nOq/I49+/wLUTIzh8PhezOY0hjUMQI2aCuB883XDwK8ifQiC2ii13XMHsJ/ZgND6Jb5ABXdNAdA0H\nwJQI/vdgSBKsKQNLKKwrgBeGg5rH0fgwYpfdTOKFxcjrINgahuYBM5HGTATfDxAqEFy6AjaV9D4U\ngQDqxu8hzIo02Io4yQW6PUgpQ5Ee9BF8cBdSbjyzPy1C82ACcrASUbMYVnwN27Ig0gr9uujKDudk\n2lkmdM9CaGiHs2PRXWtiyKU9tOkPc2ndaBxVDVyz5hj6G5/u9bYAjJ6BRLS10UoKDWyi1vo1/iu9\niEEzpkAoqZV+hB1P4XSkEZGzDH/VYrSaw6ihOgRRBH8unHHSnpGCMdZJuTmL1EYf+jMWeH8fPD8K\nnIXQfABOv4Uw7CGES1rEnOtQD31H4OA8tKP+C1sX2QvnboDEv/wpwv9k/EHK+P0gNFfChpfg5nd7\njx9PvRw6qiFvIYxdgvjTBsyjMrgU9jpxWw4iFPUn66sT+O8x0OpLxPFFGsrkAGfmX4bZFUfWyb1o\nW1RwqJhSvAgNMtpKhaDiJ77qOFhioeEiaEWEtBU88Fk2oYFUhPaDEKeAWg3RC/+jwPufBUDtLkX5\ncAbM6ougq0caugzH0r60nS4nYvdXxHbPJl1aTIzyKMkZa2DwIwTDzzKibQtd82+BPYvZnNzIWO18\nPGOeB+90/Kcq6bp7Ovrx48kasJIy22Uk1G3GpptOzVXfEnf0C0LRMbHiEKSNAW8nuM5AdAd8+SDa\n6NHEO/2cEiWGmrwI3V5IeAL2vAy3v4sSeIYWu0qEqEPffzI03grZlxNIP0bTGJhx9gT20p+gyQeZ\n/SA7G74YBvVF+Kffw+bJkZiK4jEt2QQfPoV+7W6EpjR46Z3eo8jBABRvgMxQCCbAc/fCrFfg1AoK\n++pJbl5Pt8uMd0YI4ednIfh9CEIQCjVgTEeTXgB9jTDkalR7OGpuNkLldoRxXZD5V6h+DCHqeiTv\nOqTMBFwnRUz9NCid7yHIAoJxDDyaAJkFoF6AkiOYvjzKyNUimAsJ1HvQ9sgo/SJwD95IyPcj8U4O\nEmLuRKw5jLosE1f/8TT3TaMtXEZVT2IJmYvUM5Co1gMITSppr/vwvf0ReuMqtDnXUR3l5mLj24SU\nNaOZ/iKi9nuszmGIvwQR3B4ktwy2hzBoGikadYrsx16GhBBQ/DDjbVg9vjeQtHUpQkEmjDyENHkh\nno8fQkr/ETEq6v+bKOUvQMuvkPftv5qSvxl8+v9O+8X/L6vj316EmfEghMb+v69V/AxZ19C+8zDB\n/QU45qbh+fwUeC9HOLkeJseiN9ZTrrfhHuHBdrac1I527MmpCF1FKM44XItCMLVFIjWGop5dj296\nPHLAjqm5CPH5JWjE7WBYSpi9CbZ8Dq0mGHwz1BwE15MQmA7asN56PN0IHz4KC14k2HMbQrcfrScR\noSQEJbaTAD+TefEQms/vxj5JT2PCm4TLO/BH+9HpXiVc+xfUnlVM3HaIsstE+gjX0aW3wKdfItfX\nY37wQcTW02Q2Bbk4RIMSFIm/+DFi7Xmuk+IIuXEDLF8INj1k3AWmUoiUYd1etEIV/b/RI/fzoOkE\nfl7a65PX+BNKzeXoM7qRfvwMaj6AaX0g7nKEyAkkXHyKkAHT4cwnYHZAVxWcaoMn9qBqrWwybGKC\nNIMdwi5IGQxT5yBkjYBPXofJU2DoDKg6AEclmGqCIyHgboWkbEi7gdv23sfKfrfy4I+vIDx1Fz0j\nhmH76QxEl8NNK6DqLGxVIP0CVK5AaOqDsOFLcDYBY2HG1aB7Ar6R0UQ2I4rtmCf2x/XTGfRxm9DF\nNkLnETA+A7MOwLZ7IEVAuvAdYswggruq0CbLqH/x0FrYg/LejdiS41EDfoqzM8i0i9SY/HgTu4mo\n2EJMTT4NiS4CQhUJ1mcxHRiL8nkD6gCJXQeeYg614D1HUqseryGRPUMM5MfNpscfj/HIYnTaKoKO\nERy/bBazmEncnnfokKpoGNJDTCAcju+DvWvAEQrXv4DKEuS0Z9CU/4qQ5sEwzYz36eHo3xyMqOsL\nhmcRxN5VOqoKnnIY8OP/qL6xLP0xmsJ/ivD4W2Hd8zBmwX9cu7Sbru5s2tavJ/Wzz2iWPsA69EU0\nN94N08ZAWilo+5DtFOmwV9I+3Eakry/CseOQnYuqdqDPW0VHy5s4NrX0+tRqTVjaNHRdW4qh5Us0\n+ivAdxSyJ0LGs7DjDBRL0OyE9Fi4tBTSXge/Fz5YCFe/iBSfj7h7OfgbUbaOwRUzhtAR3ehKriPQ\noYURC7HveYyaG+rpiZUI0Z9B1GRBZSEk34OlYyc+uYZ9VcuJW9lA+vCJ2F9/DfH0w9C0AdHqJMP5\nKmXaN6hNdNBv/rdk7F7Sa5ZeeQmcLnh2JXy5AMLnQsV6mKlFb3GhRmqgQQE70AXsz0eTEINgi0dz\n9XNgNsOn42H0WLR6E6GVHyOUHYAJZuj3MoGo/fycnkGCbz+DTTcyjxvQqlosmkZwfgInXofpedA3\nHh67FRY8Cq6TkOOHC+EwVUAd/Q588hhCThBN6gyySk+ib4/GFPEsJ8OeIrf8Z/RD70cYcD1c2AA5\nE2HkaNDsgWAxBLIhZDZctxgMPjDYwNKFkhyHWuRHaDyO8Zl4PIutEN6ELuoYzHgE3qyEkAW4Rw3H\nV3UG889NaHN0qAOt1JosCJ3thOhdSGersTRoMYxOwW3vQ0pnHD7tVdSOOEyb3E3cuW7Mcj/UKDsE\nBiK5LxD01DJs8F7UA3oE4SIoU9EHBMYd3U1jxznqPfHUyhnIYXlMfGcL+Ve0oKz6FangCNk9QVpG\nRxMU2tD4zOB0giYXPrgLubUTuWkCUqMLIdyMODwcw6gYvB+Wor/nOKr8IwFNPYo2H4NzGFLYZHBM\n+n04+i+C/AcJmftThG0R0N3yH+87Kgi4dTR98yFp7/0NZce3+GLXEPlJLIycRjDYSWVFKBl941CM\nFyDET01XMvtv+YKbvnsMde0aBLMb3fFXsX/xC4rOhOD1YGwoRZkpEay1ofnlPKq9HMFogaRdYDRC\nWCiMfxQO6KAnD9Z/DjGvwgg7zLsakvMBEBJvhc8+RJj/Gf4nrkE/Vou6B3pG2zAOHYS2Yxbxq5sg\n+wziym9g0Qu9q8MlNyKb6ujjOobweTfam97FfNvtsP+vUPs9hEVB8kiEwk8Ij8vjUn8LjUIJsUmj\noWQzFF+Ax98ANdjrHqe3wcIEMNdAlwZhUjs4x0L9aWhMAscK6HcNhDqAv+80Rr0EG1+EK27DkPcI\n7LwG+nipi93O1kSRPm43g/0a6PkMbfcBUFyk2vzQPA363ADVbdBxGrRBWP9JryD7SuDyRyF/Aeya\njDqmFQ4PxRK3ijnvB9Aueh0wENOWhGJqJDDmRnSiCI40VDEKtWY7YvxRMG2EkZPA1Qa2cKjrB3IQ\nHJ2onabelolDRWquw/LUEtyLV6PWudE/tw2KF0DINoSmnzCXgbbNiZDxAPLEQuLWNyJ1tiJnSJye\nO5Hgjm5CP/ETnNjE+ZuNuMXHsRGNWUynPa6LduPnoO7D2tBFyLibKYo4j7XmLEpGBUKXFbG+iICv\njCqvhU/8z1KWOoSPGp5BW3QSDDKRD1UQPFmGIoB0y62EZPenQfsl0e52tAlWSPRCuJe2A3bok4Lh\nq2JM7jCYn4tQuIdgYyRa2QnmxxGDm9Cf7ESQvkENf5L/aRY+wT+ICP/7GPioMtQvh6av6Ghvwj74\nG7AMAskEn94J1y6Fji4Cb0yk/kg38bmjkKKicV4XRN+Ugm3AXchhdj5mP9eu3kxY6Vv4++nxhM/H\n8nMFXRfbsD/xEurHtyCcdiMkGFETe6BVQL1eRcnNQnynjKJXFhHtn4DNPg6tTwv1hbD/HvCIELSA\nIEHSKIjOAY8Gqh+HtMW9Sb5AsOtXxO9WE0i7Fe/2bYgRWrSnl+AZLCEYJ2CrvIQQH4YwJwxWdEJx\nOTy0giapCe3XT2PWuZBrgphmjgM1ABUNcN9SaPkAguGQ+gZsehVVb6Lr8rnYxIHw/DCEsiqCawrw\nixWYyvUoh95GjdyEIqgoQzaihFpRzj2E0lCE4ktAzHNiONFB58w+OLoHIwCKICKePQVp41GlGFi5\nip7xbUjaHjCCyecDy2CIfwWsI2HfQSo/epGUiBawZgK7oUiFFhfYoqG9BdxBuDsBVAE0CqrsRAn6\nkTMEtE+B8NKLMPUJfCtHIqcOwVQThBuXQ9M51O0voDQ1It2mh+KFEDShNi9DHZmC2LMBtugg4w4Y\n8TDqnVn44tx4RsQTEplHeb/b6HjidUIsEha9gm/clQgrXkM3XYc4JB5jdyNWnxkxORQOdkDOfShr\nnqI400GtlEzm2fO4H/0LsSn9kAQjFkaDczMoPthQAtkDoL6RSnMx2rCtxOk1qA0noUvg1dwN9K06\nxeyqNUiOJjSlGfha6/G3txF8LomQT52oZ7ponf4AYbWfEdjmp/HWcVj6DCOi6Eew1lE13EhEkRN9\ndxqB3bVo5z6BZlIkSnUkcub1OKVHce4dwICfn0R9ZQmsvxvhllLQ/KeYCXc1nL4dWg9S6RtAypxN\noHf863j8d/wzDHxq1X+8znih9U8Dn/9rCBLE/QVMOTgbX8PecwoaV4LiAVsD7HwA39Fm/L464u54\nHem2BwCwHP4O+Zb76A68zqG7JzH+uvGE2cvwRNjR+zsIKd0AlTpCBQPKhUMEM6PRPXsvrFqKMCMT\n1X2K7qh4LOYrEG+QyNp8lgtXbcbgbUEr2yGkFZKDED0W1q+FYX0gZj/0NIM5FeI18Olj0G8Wqj0S\nr20l5kVfoPMKaIcPRzSZYFUJlzJqias+gVwtoMR3wskagpE3YOx7Cd+7C9HpzLQYQjFrBIxD28B3\nGBpN0OiGinUQkgl5b/fepxuXIZTux/bBy3iu7gf92lDy4mgRJyARQU/qIAThOCJGxDYQzVWIajiC\nFMSVYMK+xoTOpqFj3TDUGTI97ec4lfE+GWIxsUP+hvq3RZQP7KZ8djaZ7edIdHYSjDRDyhUQdidY\nxkEwCJ8t58S0m0lxb4Pr3oOH8mBaOlQchcZAb/BmbhAsDdARhLUmuOsxiP4e4XwJSlY00ldLobuO\nruFJhOUuhQvH4aPrYdwNCOU/Ich9UZt0CKvegqseROjMRwm1o9YHEOq9MG0cqk0D4T1ouzL46g0N\nrtACQt/aS9kL07n5yvdRmj2cjLahPngtYmM9mkA6g+O/QNfhw+hOhwIzNK5E7PHSd1cFacMqOHrP\nFYQs30i5sI72O29hRJ+BmCJmQlUBXNwIdz8Ju7aiaVvNu/YbeKPwZ/Dr6EiI5hnhclTpL//1AAAg\nAElEQVTtVPi0CuEmDYhOpCe/hCVzOW/KZHTtRZS5Jj64MZfnd+fiv/NeakO/RjGUMy6iFdfXg3CH\nlyF4NXRGTaLpfoWa2gIKXZcRUVXC9cvd6K5bRfYzf4N8E4JlArTVwJmPYOA90HYIGjeDqwJMSRA9\nG5IWcXhfgJTfQID/WfizHfF7IXQyJzqc9In7Pyz3Qs7ieuM2mqtaiZ+fhmbAQSg9h2wbhjE0E+Wu\nidTVXaTk8nxG+g/gHnUn6u6dCKUi+BRIkCDVglhyCE+iFl3qvbDgAzCdRDkWjq6jGfH0e5DbD8le\nTc65PtTFlCNJUzEc/wmS+kB4CHi9kDoBQrRgmQcVn0MwDQwXobaIgP0YGiYhCCYw0rs9DPpBa6DD\nmULanmJ6Pp6EueoAkrkFTcIXqA1NBOMlDkzJIz30Ih21ehynZASTB9GiQRhlg9J9EMwAyymwJAIg\np6bS/UAEurOFGI90IvTNwtT9MQFrF/qiDXChEVwSHPJAyf0QHkfXIx4MHSEYokTozEZ05CI3ncCq\nv5khuxbS0WnGl6nn+IJ+xH29Ct/E2SR9tQl0AkpBEBaMAtc2aP8Q9gdgqoZJJ5eAxgV3JEBiAnSc\nBRewcDF8sRL6FkHG1aAZBim/IGiCqLX1iBWg2ryoHUH4+TtMRZFIP9zV+3u73fDiHaAJQQiUoFbp\nQJEQzm2F+mJE/REUvkNMjMQdVYPc9SUGi4OOv2QzM3IA5z5Yi2b9N0y90Yfwqh3jE41M3n8Qe0wq\nnDsEcevhtALNOrDsAJ8ZWnQw9X6Ezz+hs93GQOUMhmd+wr9qDD7Nw1Qpb3JAvJfokgamPPICRoDo\nWE44x/FD39k88cUyHJfFESpFQFkQoaYR7k0CfxBMcWiOvoGuXUP/Vwvhqss4k9fK4O9X49t/COXY\nIXIeH43S9wxKcx33j3mHEdOOse2SnZHlWwg7mcyItsOMPPML1tu3gvlTwqJfRozrgY4E8Hpg8INg\nSYLVuZB1FWTfCZa0/5RI881vRuN/Bv4U4T8QfH4b3hMnCZs6FGnEWwQ9PqSUAfzCV0yJHoLOYCPx\n+CnuTotDN6qRwLJPkI6pCIOBOY+CtBFWXYSoBgg4kLsPIoWMheaxULgWrRLEdfMQLLwOrtOI+z8n\nev7dNHs+IubwSYSf9KDsBF8fWN0OCWkQVwzuEzBoHly/ELXoBP6+RzBL/+lBb1gLuUcYor+InGlA\n8G5FinsFoXExwv5uggYbYh8fM0r30jJ2AKG1p2geZoMUCSFEQOuYjik4CX1pOeKOhWD1Emhx40lt\nx1Kej2aiBGou9HgR3hyD/pG9sHIJuC2Q2QZGLcy9hcC1o3ArzxGV+Q443oFNGjSRPoI1jaBRMJ1z\n4clxsCl1B32/P0dCcTOJL62hY1YoxrMBRFsQ9rwFmiRovwRx1RAjYLMDp0PBaYRUG6hm0NbD+Hug\n7yRYejMserc3CWLjZ9CwDTUjFG/7OLTGNETlG+QGI8GkfiBMAEXpfdVXwdlaMOsh4EGebEW6VIiQ\n0wehvQ4hfzlq9kGk7WsQMi9D8BxGih9B0NrM6KeW4C1ch6/sB5TmZgxvpCJ194c9a2F6M4RGwok+\n0LIPLGLv8fYAsG81zMjGfbATTcQItO1vY3qgBm3x+yS2bmd8xGnqppWwWyijf/eVxBh/xZHcRKY8\nkxaXDkd1ClyzCgKVUPoYNAFl0TBWRD18Fk1PJ9ph3ZB1O2kt24lJvIh/phV9iBuDXoNoaCDoFrn9\n18+wRDSR/kUE3ZrTmFSBoH0QFsMPeL66Fr03FkFsQx1sQSiqg1tGwvABULkW1Jvg833QuRVyhvSa\nIzlrYexlGHqCvzl3/2/g448x6fHvJ8JeF5llv8JxK/hcUF9K+9qfCUuJQKdUw5YPOTArhr5tWgxW\nG3p3F+jMkJePDh3UX0Lb44J5k2DoZdBaDJNWQu1MOObHXOGka9d8QsVZUPojvvELqIk9QWzkKNAN\nhlNfQsMJtJs34Jh+Ly3zyglv60IY9C4IXtDfBjXlcHoF1Chw+kivGJ/cjPlzK8JNn8IVt4Hu7z58\n9c0o28MptCYSMakK2atgU2fC1lcQSUGVOzG5yuhMD8VefQbN0Ewc91QjvuhFCsYTuOIpPByka2gL\nytARqIFCzOWVWHdmIqpnYZsPeuIh/yGavl2G4ce+aDRTsLz5LXyUAO0S6rA+tJj+RoR2FUL7myDb\nIduKqf1ztIV2mN6fi7d9wVHtp4xpO0JMejVquIiEiiHaSutoF2GbfKi6doTOql6zmrYE2FGF0FeE\nlHAYMhZyToF2KrR+1Lv6is6CN/b3ivbeG6BVAL8FEu0EA33QiBkIbjuB6Da0LRWQnt7rktdcjpI7\nGNllQFN1CsEooBZOgasfAZsNTnyK2FaBktyI3tAPYeMGKKghtDCN2oEXsZw6jGnXKvzr7JQn2jne\ndJGpN2vBJ4IlDLZFgt0CxuEol04hnNmOcnwPYlY7CJNpfU6LfWMX/kn16Np3os2+Hw33kQEkCAF6\nlCKUvffgHmsnzVlCksZD+tWLoGFn74iYYTDI8XBxDURF0mlJodlxgRSTSnPfqUQa9eg7yjF0N6Pr\n/xr016PuWQatAppd0D9pN3W1EYh1tQh3JeMOcRI4Z8OdHI5J7ORCah9yt4SgSQcqGlHVLoTOVCgq\nAFtj70x3Sj5UlsGejWAwgVaHGPT+jsT+70P+g8jfH6OK3wqXzsOXD5N3YS+ECTB0HoycT9TljxHY\ns4zGrtNYT/7KyGV+NF1vMd4eA44voLQJ7n+9NwpJtx2mTwdfBL5Dq3Gd3UiYGNJ7CGN4FdIBN6ZS\nI0rCftR0EX1DEaYRz2ARJ4KghbkfQt61sPE59NvfwxEJzrTBOEJvQPPBSLj7DuiTB10XYYgeZbOD\noDsG+fKt6Ee/DBmXIfw/AgzI335Pc7WG2m2HkL41of4Qhvv4cEJzY7AOuAhaN825N6B3zEc5exXU\nl0OIRPtzRoyTHRijl2IJtqAZNBBf9x70x80EovNwXlUCWDE3zsM6ZAZseI3ox1PwvW/gYkkrwrR0\nUu4ag1Gzh3bXW1iL0tA4rgT/xF6rz/ZfQJToSBiCPrU/xzwvMbD4ErGdGqS2cHyTGznnG0GP83KG\nuhNoC3+a8PZOdGFZvRMXQ/8KPV9Q0JbNwHe/hsYjcK4TGmvBL0HtJYhPhLbjcPhpFJcMcgeBq55E\n7PoApb8N2R6D6nLg0QSxnTyNP/F6xIg11Nz6KVU/nkYyQlRKOPGNAYLV21AL52EcPhHdlCUIqozw\nyz0IRz5CjR+GEG1HzB2D47uHUc9WI6Qa0P9tIH2D5wlrTuHnNyuZdF0EjjMegp190Fi3oyoKgVMC\n+tz1oIJvhog6cjtdxqF06I/TlBLCsPPLwZKLoI8GwIgO4xf7IPR68JykclWQ8GEmGka3YS8+gVZd\ngf6sCxqO4u8MZf98C6I9nbEre6BOIqR/PG3W79G3Z9IYl096xp0otbUoniLEDQ2odhv4W3AEu9Av\n6CCiR0PdUDMxmaW42+GMnIfe1UTxODPlQ+7BOC8e6/F12Lv6Y9NHETLyLWznz8KxX6GtHLQuGDYF\nCo8zYccmaLkATy4D7R9jlflf4Y/Sjvj3mY74P/DN119z/fwrUXU6arlAGYcxNbWSt3onpqM7kOMy\ncCYZidHFQnsjdHeAQQdNpZA9BGYvhJS72U4nXeue5EptCLjeg3YFxeVHniEgpb+AsGMnwuES1PF3\nIEx9obd/5nPh7nkTfX04UsUSGLIW/8lPcPlOEPJcGeLGR8AxHlp+hqplqGevxPfjZqTRElJ/N4RH\nImivRkADTXVwbDMkWqmUEolILsVSp6C2q70TAjaZS+7BWOOn4qlsIkH5GDFOBbSoBjPdW/3oJsdj\nyCyh3WLDbliLmDoVNiyB6mdQw03ImRKavCO9W9+zD0P47XBsP94zH+I0ZePnIrrpWuI+FJDm+6BF\nALsZDJ34ujPpknWIUUZcSj2GMc8RWVgH2JEnRVDvfYE3zDfwwK81pJxYQXCAGW+GFpsvC6HrIdj6\nFN/0fbY3MmffQvBmw9cvQ1kXpMwEqlDDG8AehxqSiz+0ADmhFDXCSmdIGLa4mRgDAVo1lTiC0xB3\nvwfjHkP86Ee8LQpdx44TkpuKPMGGpmo39Ssd+CffjL+pCVVRqFO6ievcQeJVXkLMfUDrRi7tQuwK\nINy6BMr2UfujCV9zE0Kwh/KrutCsqKHf1SmEp59FaTTj/ToGKTcRnWMn3mtTCRg87IkayEB9Pq1s\nJalgEqGBCzBgLUhGKCuC91+FR+tBiuT84VEcHBvF8JqvyCvajZo9h5ZmP56L53H1n0T88MVYO70o\nt/TB3zcN14sx2MtKaJOvRdy5Bke5Hy6b0NvrtyZDwWtUJWqI2xWDVl8Hzh4UfyvBaQa0ad0IZwdT\nNP460vc8Tmf2LQTbD9OZmUzPhii6xtvxZkxnhmZKL5E6WmDDcpA0kNqPU+vWMTA6DBLS4br7encd\n/yL8M6YjTqn/uGn9QKHoz+mIfxa6aSWQ3MQJ3VZauEQ8OYziBvRRJipuH4T/xluQo7IQEIhhIDx7\nI9z/DJz8Ag4sA185dOwB7mYzHVwaOYcrf1kB1iSUUTWoJh/BphCkYwUIrXvguqUI61eAPR+yx8LG\nFzAe/gB1pIDaNhqh4XU00x9CKj+MKgdRdmxCTHsDMl+B3YkoD85BGrMf5e1kpHAJxs5G0exH2KND\n+LUSIS8LuvSExpxBEz4C6o+h6mUCIQJt+jzS285D5HHo1iDrI2B7J2qECSHSjyXChziqFNeRKOwV\nesRnp8G+zdC0GOwSQuq9aAo+gaP5YHkYht0PPy2C1AfwnfMR2mc0nVfLaJ8upi5SIO5kGFJyO6RH\ngtoHwWfDeugc3Ve+SUK3DeGHJ2DMU5B/BZIgEK07yLMnX0VXoUEZGUfwPJhOtdD2oBf7958iTRnY\nGyLeXdUrUGlDIMkAOgViTkBKGkxcguxdj7iqBP2mEuTLzbjzxoBFQaO9i4C6CSNaJOkeZH0APn4V\nNWU2hkXPYHhmLDjaoKqAQFI4sQN9aOPqEC6bCakDeStGw/0/rsZkeQ1VtSNcsIFkxTMuHFPGX+D4\nCuJvvw4GfcV5SrHSQ5L2a2pPf4huZBiuej3ax3twTH4VueByjOvrEHInEal3YRx4iVCHSlOqC2lf\nFbZt0TDsGLzyOLy1Arw3g3kuOUO91Hjq8epSaAw7zxmbnpiGdvJPFoF5GhyZi+ppI5gN/uv7ESZ+\njOC7At25r6nLn48jZwhMvrZ35rnweQITFuHSbcRbVg0XTGhS+yBWnEC65MJTE4oprZu+UiP+OYV4\nTs8nMlBGhDkHKeNK2PU9mO2Q+Hcy2cNh4Qv/m1vFl9wM/I0y5v4Z+FfNCQuCMB94AcgChqiq+l+a\nM/9b+QnXcp71vIB3YAmJ5DFdvY9+ZR3odzyEumYkrS3r6KPJo8J7iEw1F2orwBYKcVkwZym84oQw\nG3QdhGA30zovMKf5Z9ToFGjXIxT3IG1ORlfrR+0ph+EfQ79H4Yo8+PY2KDsNg0YhzMuh+Jdk2vO1\nqJXnEN8aj3VnC8EbB+ETrRAwQakNRl+F4vwrvqGj0H53AKEHxK/eQXzvIMKLP6JmO1ESK1FSYnEP\nNaFfdwKlrYeWARo8EVHEZt8EJ7vhRwX8qchz1+JPz0LIvx+lVEG6XkIwr8I0vQClpRv3rcNQd34P\nA60gJsJPtVA5HQ7ZwSjA0pmQdi0ceh2bX8V88n1iPvMSGZNJXFwuqsGGWiHDp4VwUof20D50NQ1E\nvHkLQtHXMG0w9L/yf/+bLin3Emb1YB2hIRD5AQ0rDdQuuBXR/DId15TiC/n7IZoLyyDrbijYiupx\n9m6BRy+ChYcQkuagCXkesaYE5cZBCFoZbfEpRE0//Gu+o/vYWsQ1B3HddQeBs0EkbTei9hKcfBJC\nolAe2svFRUtwjs8hOPN15HNeVKsD9dgGrnv/UQylh9HssqEYK1EzuhEbSnGFa/FRBzGj4fTzUPwB\np7rWM+DYu8REldB/cBT6Vjfm3DYCsozseRlN12xkXyj64q3QGEf4/jDCyoZjsh6jeWw2AZ0Kr2VB\ntgDmKhCcYL2GrqgJ5Dh3kuTcS2VOAuNOHSW/3gKDr4H6M1B8EOVIA4SFYYl5FKHqEzi8m4uTX8bV\nV4ABzX+fYBBh92HcLjfNDg2+KUMRZvaglh1ETvEhJCr0TFRRA5Ww9iN0x8djOx9C0ehrEU2PQ2YO\nfLwN9hX8fgT+J0NG8w+//ps4B8wD9v0jH/63WQkryEjomMMTbNmynYgrk3rFIHkGBFx0dZ0k1RVL\nlfM18lxORO9hKDkFSemw+XpIyIe8x2H689BwHxyYgBARSlh1Aox8Fs5+haAxoebKlI+4mZDyvURl\n3d775YkPgvZnWHIF5HejnoewapCW1qCm6BF8egS3C72mHLVKgHMydD+IOlMiUGPGmPc2IhoYMhY5\nfB7Shi0w/Cx4/dAajfuKGqQuASJ78PYYoC2CELMJtj4EaQJUKZAYivbQMXxiByAhDPOC4W448jRi\n6HEEbX8Mtr24TpRh0qmIcg4s/Rpa6uDlywme2Ul1+p1cWnGQ4Ymd9NxnQ79dwabLgrwBSPX7IPYC\n6AzgkiFZhovToG09ZM/sNf4xX9N7P1QV2ooQay9Dla0ELDLNGwuoOlvKGMsPlHc/Tfw+C2LJYSwR\nU6D+FGw/AaYeMGi4NG0CUeF9eiPCAj7Ub54haMzEve4MprsCqAUGhLv2EHzteryZBkIz89AmBsFz\nDBqywWCGjNtorXmR84FHSKvxEHemBUVjRN6wCV77CGXQTJpow3bwUziwGzVVgGXNqLE6OHuKes3D\nxHcfRQs4O3djT5qDPv8aOPMlwvFj6GUFTb4P1/h4XuieyxPm05hGPcVxx2qyPtkLSTOxhqTj013A\nHV/OxbA4IrKchJcUwI5Z0C+PVuo50fQQk4q34JmwlhHeozDoLfi+E/xmGDEPho7hQqALXech+iyf\nA74eMMbg8scSkTgNujZCw0LYHQ3HD2O8VIrpyTQcPzkQwu+GcXWoW1aiFPoJHdqB3E+HlD4VYe8e\nQjIKyPjwPB3D0wgd/ARMmwNfvQs3Lvp9SPxPxr+qJ6yqajH0tkz+EfzbiLCIRAwZAFiKavEXnEOb\nmYloMOLMHkNBZgdTOpMp9h5FiridJNcQOPYw3P8puAugYwMEuyF8NmrTAwRDtHSp2URoCpB/TkVS\nQRiwFCELojR6KvJEogAO/QrHf4RaCaZ4oTiDwKgRlJ/6lcwXv6Fn3FbM+w8jKXPg6CcIu1ohwQE3\neVCT3kRviUEiCQA1JJGWwPOYB0aia0+gZGgWhiDYenYSuqWDtlHXUGWoY+D2vQgRV4L2LMSloBpj\noVOLIEYhBV2QW4DyoQRJUxAj4uHkkwh2CToU1AwDzu+9GAb3YN+2ArxuUF0U6Odx6PklzFi/Hgzr\n6Ry4l7AzXtTjpSjldeAoRwx3o3ZqUOJD0aR/gK9sNx2bNhE+LB5N9x7YvaG3JoAwC5zMQNh9GvHu\ncGJmtWJqtaA/cheZQ56jJONpEnxmZjifBs0guPF1sCcgrBhBROrdVBjXYPMEiX1hOQyUkbITMQvj\n6ep/Ccvhbmy3XkUwK4VAsAuxdDeokeBVUFOMBNSLFHYtRRidwgjzywQitkPoj4izb0ZuqCBQexwi\n+xBfeIgmpRrVroNNQaiDS6OGE9Zxiu6sMtT887DzHg5HGhnVnAA/TYVmK6psInBNO4EIDdH78lgw\n3s4jiUO4K2EoPcI6fO0WOPcxxL5GqHk2Af/rxFXk4Lx6El2KlZTSdxDWdiHmv8ukpkOIbgXDqm9R\npSDCNA0ojdDjgHOvoY7aRHv9CsJ0VtAXQawRkm8jas03JFS3QEoOjBkDw9bCiL1ov3+M1IiXEO4Z\nA7522H8TwsxXEZc9iFgJXgnUnNloGy9A1kSMYz+n07eFkNcPIA4cAIcbfhf+/ivg/3NE7feD3+Gg\naeFCfIWFxOzZwabhq5hTX0Gw/RL9/Z2YvGlQugymhULhIggcAPt0qPgLtPyEgAuvtgi9OZp0bSl+\nEYw64NjzkLYdm/s1kgoz8ey7EkNLF4IpEYZE9saHP/0w2idHkOroJnzcaNRdq3GlyRjS5qIJpsE3\nVyIv9BFM1+P77hnaonIIhHxE0Gwgbvt+wm5vpXpgIrL2Rdq1F4ltdWE5f4D9ugcZYEsgv74Q7OeQ\nd/wKEX1RvR0ImiLU0+0EVxfgX2rFb27AfECPa/xKwvfUQ4QEiVEI0SqWgBMpWiGwajd1JysIyZQ4\nLWeisYpcuX8/saNH0x68RPxaAd9Pu5GndiFWFCH4gR5QDALypdsR40GUL6G0+JCaV0Nef7hQDfM/\ngcNb4cetkAZcr0cKSUMIbMae4oDUW5BaVTJ3iBTPtZFwugfthC8hJAMUGRzJGK0D6PvLbvx1nyFX\nFeG79kbM4VNR68roafkce3cLuoQa/Ke2k9Bci2iWkT11CKKHTkcU9enZhNfUoIuPo1X7Cn5dCXrD\nCVy+YWgeHISn/WOsZwow1qeze9zd9L3kJHV3AepAA0mGFDzDp5Ow/0W0+XvwemPo7moifPuTMKYc\nNeQFgv5VqNog3cWpmPrMJWvjh7zvPsHx0AkEpuXQPdJF9MV0KHkdYfDVqKFW/PGVpD/sxJdWizdR\ng6GthdDiZaiNHuR4Hcf3rCM5dyQx1XMRIvaBUw//i73zjo7izNL+r6qrc7e6lXNCWSCBQGQEmGyM\nwSY4YBxmxgmcscdxbI9znnHGOYLBNmAMBttgTM4CgQISKOeslrrVubvq+0Peb2d35zs7u56Zzzuz\nzzn1x9t1T1f12+99TtV9733uFgODadWMPdeI3qyF25tgay6E9HP0vluIHEzEsPldeOd1GKiDSz5E\nsCQRURGA7CCcWA0Jq+DTtxBGTAaTiO7cQeRjN+B+NhZ8m1Ed9xNlasc1rR1T5D0Q8/mQ7vYvRIHs\n5+DnxIQFQdgFxPyZUw8qirLtv/Jd/5QkHLBYiN+zB/s779Cz7h3yPzyP8d478aZ9jOJvRO6pRtXU\nCfOzQDMcdu8FdyOkCxC2GPqOYx4sJ/dIJb0pSYQrvfRq1Ri8YUgbP0Xd2EHoxDj23/82+9pKeXjK\nTITL8sD9JsSnEYzWYG0IwLpf0VBbib9pFpHDHsK8ownpLhN+/SpUYRbM074mJPZFfJXHEDe9jCwn\nouw2Y5zfR9jut8lqMeJv+gZll4NxmjfR5o1HkQ4TnCqgesYD8nl8JyJR1TvwYqb+mSwicj0EyxQs\nt6UQlrwccmxAEGreBVU5gimIXq1Fd9lYDHUVBBw2VOXNmEeOwxw3JMRj9l6LMyYHZUEVnv6T6LJA\nbBERRAUx5yMCNjO+9R8gnq9ClxlL0DAT0WBCHOaBl+dAdRckh0B4OKRMQRj+DIJzJ5J4O7Q0w56n\nUV06iazT+ygdn06Wvh0jGUNqbsveglP3QtUWNKPzUOq9aBs24Tm+HXeBBsNOH8KUVRC6BNX6JxFv\nP4JP+xKeWoU+9SGE+Fwy9K8iVa1HzLp3aEHIVfQ5JlOrlpjw4XbiZS+CNh5pxbfonSVkpcyGK68F\nzy6wfYUhfinyxx5k60JO3vIYY+ytMCoeIiYjDPSgKvUhAx0jzETYapBq9iNF6yg89DUDCTMwbKmE\nMRfDyA7E3i+JCU7CpyuH8QLaKBeOCjP9F3hRNBmE5tpReecwdsZG2gNZdO7cRVSKDbFcBEMY5oxC\n+PF+SLoI9KGw4AQcWYlUWgalFbDsToJmLf7db6Bx2BDrT0JFCZjN0NeGYt+NPDkN+fp0ggkBqBUQ\nz2kRmuyoqyyIbSqEm85gbyiiMfx9oqPjiGhrgcTk/0/e+9fDz8kTVhRl9l/rPv4pSRhAZbEQ+tvf\n4qeB/OYAgy++RtAeh+X++3Emv424qBtt40dI7TLC90DdfliVAynLIPtF8PWxe1QLVz8zF4PJhx4f\n59tMRF3cjJwsoLd9zZRtnRSKRgaXhCLVetBPnQan7yNoNnLCM4xJCZN4/Ku7uK/4PgydjTCtCdm2\nCM3+CpSTtfRWn8cuFRA11o8xX0HpMeDoNxHV4cc7chfkJyM5ohHyAthNkejdx+mLCaVkxiLMSic5\ne/egUk3A5NyLMcbNCM8xgv40hGENCEI8jJ4P65dAfR0k+iA2ESKnQ3ErrelmjNZKQhoLGGvoxV33\nFd6Vr+L1+1BGpxFyiYIy6WZ6ftdJ/PIW6JYRmuYjeA+gvuEVDkw/yWjldSz7bobytVS9lo2ULpA5\nIIJBC6PuhEEnrN0HD/sQWxrpTcvCpOlHm5sMyXlI5lE0HQ6inf4oqedWYHBVgf0zcHaAXYbDnQiZ\nAlLqKnzzfo1tcDrhh6Owj4rD8v5dqG54G19oDF3OI1RlTGNc23BC3u1BiH8exq8Yik0HvVD9GZZ+\nLwVH7JQsi2fCjyo0878hUlBzt7cdssLAMBZl6/UoKWMIfnAvvVUC/ufmcT6yi2u7Q0AbCvUDKMHT\nyAkuVN+IjGhz4yj4Guv0sQiNVUguHabUg6inelFiPkc4KUC5ESWzBHH2jSgFZgT9GozaAHUZOUid\n5VibGwmGNqFckE3S6DcIfr0adr5LX64VedyDhLxyM8HwZETnMaTmL1BFzUDJvYu5D98CBbewXW/D\nEVVB3EOvMdXmQfHtQY6yEog/SzAxGTEqCbHZier4YaRtRgRJD90iStTjYN4J6p341QqN0WG0yArv\n/eo6YujkeuIJ/x9OH3+nPOH/NDD8P3sW/wqIIgUSQf/KKwTa2rC99BLO7l6irs1AcpzAVyagaZER\nVkoQ2QQtT0DrY5D2R+wdKpwZIRhqPRCuIt7STeP63eQ88TyDUw20KzuJPDUGzfUr2VJbTsr5KsYn\nHSdYPQC+INR+xvtzjiG2elAK6qAC+py19H9TT7c5lvD0SaSE9aB2diBHCKgNNjoCdBkAACAASURB\nVKweDRzqx5cdiq6hAbElEvpDODNmGXnXX4FTrzDh2MtYjrYCCVC/HUQ9XBwHXzcjmCT8P8ag7fXC\nkaXgboJcH8RPgFM7cLV3UHa+g+zRg4Sof0VHbwle3wTMI7IJeWwSGuUPQwUSuYcIakQi5/8WrKAI\ncQQn6BAOfUCw/htMrQn8mHuMeevPUzZ3Ak9lPsDH87eCIXOoAs/7e3jNAb99BwZKoKcCk2k6g92b\nka0qNOoEVMMuRL//ZbI2WTg342NS1g+irXEi+U0QboeOLkiMR1l/FkfZPLSP6jCdKaPT9BxqqxVd\nRh6Vylrij8Yw3n0EqceG8J0f5uSC4Vv49gnwnIfcuahMGUTUd5GGl6MXpTNO8qNDQNtxCBw+KLsT\nYl2cT01Hd7qboE9F8Yxl9Mg2fKoadPXfQvwElMbPETuGujCISd1YbHZ6wxKIcPYhDIqoqsLoHBVD\nuMeM1mqCG4pQ9n+McPZlBGkcNPUgdsSRXheBPzUBb8wAmkMHaJ0Xz7qOj7h5zw+YozMIHVeNa9eD\nqPIGEJNFRFcIYv1N0Cgjh1+MZmQn4vBPiG/YxjDlDGafjyB2vPPCUdtkpCNqOjVW4tbuRhQNiJd9\nju3yBVjfyEc4dQJhoB2l/QAoAVxHb8c1SWDWbgfDxHcxHi/i2ZVxRCBxvWIkXDCj8MuoN/iv4G9F\nwoIgXAq8CkQA2wVBKFEU5cL/p/0/ZbHGZ58NFQD8OcgBBo/OR7WnHO35bliUhpLbhkqfCGSA7TvQ\nTACbnxONfobXlqO3u1EMArLTSmMV+BNMZE93o1hd8JSbQNgIFK2es2qZ3otCGN96hJIdMuN+I+A/\nHIFG04MqPIDnOxOV1nEkth0maupkhNyxQxs4hh6ISAJVL8hegkIy3hHN9EXGE3+8F8U1gea+fpKy\n8glIOqTm11HaVASUCDT6dtw9ZrwBDyafBskUSzBKQJVSBM1bIVcHuTeDkk/gi5VU1beRuSoTjXjV\nkBbCIi2cUCDbCOFaSFoDASe0vQz6ywgevw2/2YRUWYMccKLeA4ohGfssHfUz82gWbuPzz3t5d+Y1\nGPS5UHF6SA4x3w/+dXDqUWgtg7jpoI1GOb8L0vtxDRoQPRZc3WrCM3NxOd2ULXMTZV5O6r2fwkAx\nSDrkJ3fRcdsj+O+xEJ10A9oNv8HfGUog3oy4ags6YvDyFQFOYWz7DUQn/tt4Zud5+PEpqFgHYQq9\nsTNwTPTQmBxKIWswnlsJe6tB6YTwBOx1tXSvV5O83Mfaa37NrJgHSZAjYd106PGB+yQ919+H5ZOv\nkQbr8UwvpKWoGVVAJPzTAOb9rQw+oMfY4EUVqoZRxdjqn8R8+EukMB30WkE3H8I80FCPsv8IaLUo\nk5207Y/j4zt+TUGPjYmRG1A3hqExiyi2FpxNZlSz59Kq6yWnL0Dbjjbee3QNd9c3oRvsp3dHN97K\ns0SntKBN10HJMdwP76A06nWimUfyLh+DG3ehCd2HNioWlAGUsDZQFPwONYOZl6AfGI561x+QQmfA\ni19S4n6RBu0JEGOZ5LqTM5s/YvaVDyCotH/et/6K+GsUa2z6f/Pif8AS4du/WbHGP1We8H8Knw32\nLETa2YhW9CLeFECc+iaqtBLQZII6iBw6gaDuOPhjGTtQhiHWg5CYidAaD6Z+UgyDOL7roPNlB563\nBBSjGqG9nUCUC+uMQQwpdnqnWkh7LoRAcxBdZQvnjphpPRKL1jFIwbkDRIYOImQkw+LlkKqDaXNh\n1NUwby1cfQSVthWt6Geg3YHjnJ0+TweNBwMMHDiIfGwjChK+pMkI0SNRPEZ0PgdW4pAKrwSdDdUl\n10CWFRL6kIlAkUfAm5ciRYQz/KZY1OG3ooR9j3JxP4qlFSWvDTTpYP0jaNJAnU0wRINcfgXyzIW4\nv9OjSruZYHs4cpqEMNCCNfd2RlZvJCC/w+tX78Gg9kH1dOjTgSADEeB5BGYugKyLYOGnkL4cwWlF\njohjIH8mbqtIS0I+FC1DGLUEzfY4Wns34HI1I6ujUQwqXDsb8AjlOPPLUDxOhCwtmpTxGKRMNPZB\n/BzEx04MPAZxKf9xQyksHsQmKFgM4SOQBhqJOxrC8IH5lH51CYNqD4wpgoFoGDzHeXsig7OzUXW4\nuejjL0ioqYaProTI2Si3/IgnXYdL+preK8y4hplRH2wk6is17lY9pnUdiDEhKHY1zskFDPZPhcFQ\nQjJexZmZBonzhyQ5X9sCazeCsQVh9DKE8auQjyQQeouDEfkmui+YydGwWbjmv4Em8y20bUlY1Wq8\n7d+xSx6LR/ckqtg0Hj5wL4adv6HrD+swTplC0sJ4tNc+BUmj4YoX0NuCFPIRWiI4P6sf3cP34Ton\ngmKHgR6UyBEoGvD5VPhu24TQXIUUqcczcIZaz2NoA++R2dVI1pdOXmjazIksHy+4av/HPBX70P7F\nx98S/0vC/4K+ctg4Efap6b98EswPh8QLQLsepESI2QRR7+O1FOGouxC62iH0ITAth3HzEGb6UU27\nEWWCnuxNF3N61ihOvXMF/Y+lYX9GQ2B4BzFlHnyCjt5ht6EvsVPynp+u2BCy7xhLkqcdab6CaLEg\nVAkodqD/Ibj8IzgbDQd2QuVJiMyHhTmIdaEMc8j0LYom1F5GflEH1kfWor3/G8TwOHSNtajP7UEI\njUcwhMMDX8Ld70JsHhx8AzreRfGpkevqqQw8QHCuCmVqBWRnQOfTcKwCOiKgPguGb4PRH0DkCBAE\nAuvvx3W+hqA+k0BbCAbrWaAHzao9oB6GjMJHn1Qhi2rmt2yjLNxIoMcCXR9Bs31IK1i3AGLLYfNL\ncPgkPDgZOmsgcSSq1EnEGe4g1DGbgEuH57uXcPs+ZkRhIeNerwFzH0G5A9k/SHD/KmInxhK7Jw79\nmo9hzJMwIx26G/DW3MUg92HkeYR/WeqKAj4HlL0HO5bDxmkovmbknhICZ1zo9tfDumKMt35P+E1V\nFMfY6d1cjK8+EfmAD+vnTXTfcgXoJcIb+7FveBL33Eexm6voVP0WV2YUprJOotedwHjYjYSEpU4h\nc1MH51/Ixr54JZXnliCL1fQPr4X2BlTqCPRxq+HoEdB7YV4cpC2HUD19q5+nhZMce+oyDKFOFu24\nn2u/fInpzU3sFnr4LDUM75XvI3qaMVYNMFzbg2vfPtTiLHrWO8GgIvb2VEyhnSBpIGsqjL0VBk5D\n2iRU6IhlAZHCDBoj16DQiSzKEAgQFO/G7wLJDuHXTyZ4z8OcWzWdphkBYtZ+SU7dOXJLYskdM4MX\njz2EMmhmrd7PI/5Ggv8DiDiI6i8+/pb4x44JKwFwvgZ4QZUGuiVDlUP/HodfhZJnIfslWH4ldp4m\n0ns/UA6Om0F/F0i5oIpEXxpEb506NHPtjQTGxiN016JaXIW//XXEFi+mbzcTde1CPE83EPJcMZLW\nAN7NnM/4EuNgDecJIBdeweRHtyJ0hsIpx5B4uyIhmDpQ4iG4bx1iZzZi9jY49TUYfCj5y1BeXInS\nLSBGjUUt7sKoM+PLnIU6UDwknXjoE5SmFnCJCEEBImdBTA9kjwVFQZk7C+XICZQQI2K1D9XIVNxx\nUJw8nFFrQZsdC2eOo7R5Ebxm5AI9bu+7GHWFAHTXf0rriO8ZdbwSjyWCAc2XGFKL0Iy6FdXxW5Hn\nZlDnCWd26UZo16GLFcn54htOTbmSce0asL8FogyVH4IcAi471HfSP38lpowJCGITincv7nMX4Zlu\nQdJlMyi7qfKbmex6FKVRg6RPguh2ZM0wyl5pQNXQTPqHZ4baL2k04H8EOXImcudh9PwRAePQ//zd\nFjhzHC5MhvMboes4THkB4fg7oAygGi0hNINo0NORuYjAxh0kbxyk8p4kcspb8b9vwpLupMt2HFdA\niyssgm5vK7G/nYZB1GJ+NQBiL4pVQEgTwaKAxwsGG3JIFHE7GlB73qIl+ykK9FH49KchaSIM9qDZ\nsQ7kFoheCv1fwjX3E/DJ+M8sINZpJ8EXA0oMZLhA1KOXS7myYxvl+jO8YDJxp8lIoENL5oHDDL79\nPpZlRYTeeANi1nzwdMP3l0LhyqGNSEsiBDxDecJSFABhFKKV7ie45AsGT3Vi1imIX16DKlXGbob2\neU1oymeTVKlC/4c2+ORx/OdfpTJ7kKDufeIu38ywzTZOS/m04sdBEOsvnF5+Ke2Nftmz9HMhSGC4\nBmyLIdgOcg/or/nX88EAVLwOzRtg1FUwYfHQx3gQtZmgJIHlW3C/Bs7rhirnki+EqU+DqwVOZ6EM\nptI7YSyRghZNyu84FDqXtE+vIX/PLgJjcnH/+CLaufdxZNQ6tJtqSHC6GByXRmHWCvhhF7gHwK+D\nK14CVTu0PgkVIkKNF7+5Dm2GiJKmQ3FnIL/3Mcrp86gefwp+dSvSe7PRzR2HTzeNH95vYPGbjxDM\ntKPKy4ZveiAsCAuvhe9eRvHWQ+M9KGGTcB0Ox9jQgZA0BhJdxErJtNptiBGdULUN+nwIky6HEQFE\nbw2GxgbI6YGeHiIPlRHZ1oQ3Ow1V9j3EqBPg82XgqkCZ2MyBysuIjzMT11ZB75shhD3QgbUOzOlt\n1A+cITXBj9IQgrBkEjQmglAGo4LYemsRXl5I9cw88FtonfAHRnz+JfVji4gzv0a/OIEjHjOTuvdC\nehC6dIgXXcyYU7uR9o4h6IxEWXYXgt8JQi7y+PHoN3UgXngN+P3w/AOg1cE9T0DbPtBbYPjVBJ3F\niAkTEPTh2EYW0XPqJo7njcRk/5a0GVHoUgJk1sqYBB3NdXGkPlfP3C0/4knRE24cQX/2cCyd/YhH\n9kJbI6BBkLQQIYLOD/2h4HCjNaegSpmIu6+UEee/RhJewRT8lmDfFlSfvwsGPTj1cGobKEDx7UhR\nUUS/1kbbnAuhvYm4Pekwow5C20CdCEkfMkLuJ6tqDPvzL6Y0L4wxa/eT2OzCIu1GKHPCyGvg8zvh\n4h+Aejh6OfUZ9xEfnYZmxxUQEQfWEtD2YxyMIphhoP3tAQzXZ6GSy/AkpTGQ6ybtdANiTxzS0m9w\n/foVvAk7aIybgV1sI0N3D9HqecBniAgk/kKKIP4z/FKkLP/xwxFiOITtgrDvQZUIA79m1LD1EGyC\nA1+AJx3SLoS2nbDvRmjZBYqCgACCHtSFQ92Dd1wwJEU563UI9kH9RPDEoC7JwiLcRg/3coA6zlkk\nom89i9cZSfN4J70xp+nZmYPV2UbK1igiJhZRK56hyr8R5Y6TMCIKVq+FnPHw1U6YZkAYLSNky4hl\ndgI/tBGsGYWSfQ2qz35E+uEY4k13Q8kBiLkSc085pkfeZv53D6MYTfiyDAz43NhfTSMw2w5rV8DZ\nbXi2zaFvkw3fvY+g8fchtEhQ2gd/rCD246Nkbayh2qTASRc06eHhz+GNKlAvQojIBXUERKVDyRcw\nYKF/7Ay6M1vAYACnhxpNODM+34N9wES6fROCViTsiefxntQS0JSTtX0L7YVxnO4QafY7oTwejn1B\nk9FJ9QQjMRcuRCcMMtrSS3rYOLp7O3jromd5PW06lYGReBQ7Nmc0Dms4nsiJ0OZHkRVUxSUoiw3o\nVv4eob8KNvwOQt9FUmciasLh5A9w82Uw6QK45zHYdR8ceQXS7yZoMSCefg/av4XaFzFvv5xoxwAz\ndxeT09aIlJhAS1gyp9NCOdwWT+tVIzk0egxdE/IYkA2Ith4y1DmI/W0w/1bABFFmyPPCQTeQCQ8U\nw8wHoG4f0iUvYrqrnOqx03EoTTj6BhA+/x3ERMHUG1F0YciZCmTFgAy4VkCgj77KU8TecABq2gEF\nPPWAAVRaaLwV1eA0RhwYjsEgUnLNMqTrrsftX4W3woayZhgoe6HscSj7FILJbAt2cCR2ND6HBPlm\niJEh8X4YW4zHG0lr4TDcm1vwZcWgsbWS0JWMt7sQZ98AxbHraLlxNKagjlEnbEwS3yJWPe//o4P/\n9/G/4Yi/JwQNSKlDh24B9Z3PkTv4LIruexyZF+CwdBCffwBkP+xaQOKZLkiNh4wVIBnh+x/B4Ycl\nz4PjE3B8CmFPQc4KeHMFumAK1XIysvp5rnM9Q9OWB9kyazpz0vZjUipw+mLIZy6+5xei8r1Fr9pI\n0/kdJJ99FX2rCM574Uw5XH4LSncpih+EYzJiiBZ/7hzsD7xAnz4Um6xgy7TS5w7wbvpktGkTeGrP\nBkaeO0PxmBVMKUhC0u6mZXwX0ftKCXRKqPzdEJKAd6+L0IrDBHv9+NVqXNYQQoq8iOesCG3RhPhV\nSJO0+C6agqbgdQiNgOifuiR3r4ZAC0gJYM6ld3wl1i8P4F3oRXHsJ5CRwfIz73Nx/DEmi61gN4Ha\ngPDoCjR6PeIdIs7XFMZktdCYaCRhWCxUfAOJy4hc/ijv+9bQJzUy9rWJTKmqAN9hrvmwH3/OcTyJ\nB/lx+AWk7mzE1FCDzSVyxutkllmH7vxrqAdFFPEMiFfDYAWkzYeeeujqA10MrL4WHngO0hPh2GNg\nq0c5vgvOf4d3YSbaCY+j2v8YSHrsM+8gENxN1O4SYk5dTl9wLUnfdKIfG07jZ+NJ+PxN3IHb0K77\ngYO/GUnq7iMIjm5YsWWokMRvgt1r8IWF0ntxGxEnKlDuj8J1USLaEfG4S6/BMeYSssaup7v+DFEn\newhcGESjVIDUBckyDAQYMJjR66Kpz01Bn5rH8OKzCFNi4ZGN0PU69FdARytsnwdFbYjxG4hO+Iy6\nrFSePWQi8Jt8+HAV6r52ZLcVrz4dccIddI08SzsbOeofzajmD/HP8uEOuQBJdQOaQAxS6f3UGKM5\nd1coqbc0ohedNFom0TcqnZhEH2FNBYw6kIU0UQ/1PTDmIyRj+p/3uX/T9uiXiV+KnvA/Bwn/CRR8\niKEDdFhUWA7LMOIgsbZE0G0F/WWQOBNN3esgSrD3eugpA2MULH0XXLdCTwXEnQTtqKFOyWFH8NSM\noDh9LYuJwt50Hf7uUhK/ysMwEIGYWUeyR0JoOI62/zsUdzm/1qnxbk+j+4ELcbacIk2OQXPwMDz/\nOEcWLSAwuos4sY2Yxk6EHz5n19Sx1E36FWGSCmtnLWGtFUxKGkNSSxUjOUnrcymk7d6Ksh/EqA6G\nbUik83I9crcHdV8qflUPqsxcXO1+jKO6kPUqJCFAoLITdW8AzD0IWon03UEaioaRLDagis7/10nT\nF4H7IPSlQupIghO8iEeOo96uQOpE+qfcxJ6y29H59+Mtn4Xc10/nCQfR0aB6bD30rcAwy0SwtpZh\nSwx0pN2D/ZIWgjhRV97I9C47ByYn0dSRjKP/HGbNaQKXKzjTu2gtS8IZYiCxpg9dkxPTYJBEVRfC\nlRfC7JeRP5iCcvE94C+EH5aD7iy0vwVnZKgwwhw91L8JTR4ouguPqhldwI03Nhq1+nZUpmGwogrq\nNyA0f4mmAAS3EyJFNJbh+DsdBA72YBobgVSzH9OZI+BwMXLbeQZHjMPUUo/w2fUQ8A4Rj7Yfzd4m\nYkcvgvH5BPJuxrhnM7K9HYPThpjRhKq+AdOJUuqWJjOoCWOEvwCVvR9hwEowsYfm3JU0dWzhgrev\nQehLhYUp0NwOllgIdELedmj5FYyUIWo/qKx4x18AgVMIFQdRn3Tz8dVXk3bmKMNJwdrTQvCVq4kS\nRSIXa7k1/R06Iu7BHxaLjx4cnMGn2oYv8jsM3Q7iBxJxBQ2ozUHMVgMxq0+iialBybgIMfAZSlIN\nQuwrEDri3/iWJLqg7uBQ7P3GZ0BS/119+7+K/yXhvyM8lBCkm0EOIdOJSm3E0D2G3pyDeEy30KB0\nEOL5mvCAAX98BGKvhmBEDPrSpiGVNYAjT0GUF9KeHyJgoMfgwpjTQalxKdcyBaHkU9pia9FdOEjR\njmNUFaYw/jU74vBEAudllJHXIkjPYBE0SIFihP1qnHUNuI5V448WMQQCTDRWIUyphxmRKCcCoPVz\n1Qd3051noamqD5V9PZYGN4XOcagCh1EHnCQccHLUdQn2m/wIJ2tJ7a8j9lA+TXdUIm210RWaSerR\nozgmrUTwv4A2eTRS3Ax6hi9Cf8985B4TITFdCIIXa8pqatI6yPrTCdRNhr7H6PXcSXheEENnCt2T\nRxO6sxFfxTaMge8JVKvp90bi5jgRUSKSGAYPvEBw6xO0LM3COdpJtMqLq0OPsaGKKPd+BG03zr4B\nZL+J5cd8iE3RfD1zLiln2kidcBq9IUhYVi8LtTsI8cq41Spqbr6S5NI+dP6tUKqBsGTk5gOoup+C\nlBUQvRDeuRDUzTCqBVJDIHERFJdB2qXozn9EEDW1qflk5lwLaECW8TfrwVxDyN7RyP0jQH4NKWMW\nnkNBZLuItWg7csla0CrI84Zj7rHSJ/fSeaCDlucfZ7rQM9QleqANQmJh01PQVIxUexHc0g473oN3\nVqNtqWXQqkZYto5hn/yavgXZ+MQO9CFPw/4lMClIuKeJxEfPoL00gG1GFKcz4wlv0RK//TJ0sy9H\nlAfBcwB0M0G0AFBir+SKl9cSaGhGmnoJi9/+hK0XzSQ0GE2oqx2psIWAR4XvJS/RWSlkZn+GNW8e\n5M+FsHj8zQ8ht9hxVDsYSI8iQl2F94kg4da9iOPGoFjioHczvgofYpIGKWQvgiMCju0Gx3aYWsdc\njwDXd8EDH//iCRjA+zdOPftL8bNJWBCEecDLgAp4T1GU5/6MzavAhYALuE5RlJKfe92/BAoKA3xM\nO09hJxU/MZhIR04/Q727hPDspUQxDZOQjKgf2kxwRJ6lesouCjauhL5kkF+Ckc9B4WbkmrUc8h6k\nSO4GRYXDsZrn0x/jYc8cxA+noyRPo+qzBDIe0RJ6sJSx7gw0dgkMVdiWjqGdNSR09uLyLiN2awME\nyzGaDARXraIx6zvU5xxYzjownZ2MeMlWhKyToLjBdRrXzhKalnVgMqg5609ioD6Ir3c1NQUT6Tck\n0tVzmM9rllCTWED0pAPkaK28rppBbPVJYowD2OoyCZtzEPoMMONlBFstffWvkJY1loFpoxBPP0mw\nVsRw82cEv7mEgbN3Y6lvgPDsIZ0A12coOhV+nYTtxXP4b9cRsCoYerwokZGY8hqwJ6wkVm6Emkoi\nNryGsH05ymgjoQl5JJ4rRmzUEjZSD65nhrhP0mNKTEdUpsK+c/h6DrL0Uz2nR05iq/lyLm3aR9KL\npSjRWQQtzWh6PWy6VMcNDRp0496HsmcRlGikzh+h+Qisb4TOB2BsMoO5w5AM49FFjQW1BJoy+DYX\n1/jxiNoZZG07xd4ZbzJ1eyjCd7/HeUc/rYE4BJsVk7aYYKoXTe336BIU1KHRqOPuQcjNQ7Ffh0rM\nQ3r3MOYYD+H3GfH33DvUzkk3ApJeBTEelj0M256HPfuh6wxccgfEhMLXq+kOz8DcIyMsfo6w6o30\nqAdRH56LShtBpTqPhGPvo5lxI8rkfMJr7id84hacsUEc3dPwbbgHW+NLhIS78ZV4EMQVMFiG1WBG\nu7kUx/Bo9LIKs8nIUvM0Wv2fMRjjQV+iwRsmYJh7FcxpRLCIYD8LO4+BSUKdmwajT9Lnuxv9hMsR\no3fg2erBmSgh9R1Fd/21eGPS0Qw/AXY/ATEb9fvLIKULJhWBbg6OveVYrvoNTL/k7+HePxv/EE/C\ngiCogNeBWUArcEIQhK2KolT+ic18IF1RlAxBEMYDa4AJP+e6fylk7KjJwdjzG6SBahQFYg1enDYN\n+btSEOJaoXkNFKwGcwIARn8qUV2xCLXFKMkgj78PVdsJ6N6HmHMTvXIULc77CO9v59uom1jlnYC5\n+E3wOmisU5FoHE/kweGIltXoKo/CcgscdRKePA4p9Di2fUVYt5fTGxNPnTGa1GwtEe1bSDUW0BP8\nhra0UEw6P7GeSuSQADIdSCskYkq3UuDwolXfSOgna9ANuw5mXgc+F7ayZymXdmOXU0hPe4S3jJFM\nVYvobBb8EVpcSJiXXY0Q6YCS8xA9BjF6DKZOMx2664k+sgvZO4zGomtREnaQ+M5HnL8knIK2JERf\nFbiMoFPR6M8kTtNGTHoPNpsawS/hTxbRKEGEFeuwbroHRYxByE8G2/MQokc4ZyQkdyWKVIq3NxT1\nF5UMzkqEY0ZCspeCUYQ9TxFEwp8Yib4rnpBcBxO7zfzgH01utorRP55DSExBCZwlWSVgv7wUa8JV\nqA9aEAJHIHwOlHaAKxRmL8VhP4uq9hTaMCtMngSOVjhpwRdSgz/vOCERkyBoI3v9Qfbk9VC4vBeV\nJw/Z4cTSsAthrhexKR8hL5q+NxpIuMOKcPAROCjD3HQoeAQi52Fs0kLqp2zxHyQn+lHQ5w+ViP8L\nLr4XjBZY+3u46gUwWAg89hg1e1oZZnbDkbcQGtoIM0VQvSSd5syXSXl9McpoDfq5L8I3d4BxJGjD\nMDr3Yxx7NfiOE1J4CIdUSNW9RRS0HUBX24qYOJvyGz5h+uTLEKt+gOyX0dofIFm7mreqypkxOoRE\nIRzBuIjD0WPIdbcTHt4CEd+Dvw00ISBX4B17BXrvBvTzzfhKDGgXTkLVcpCu7w6jTW5B+ysn7JKR\nkm+Hy0zQZwLM8MY+AtNi4QIfnBkOIUUQcQWEXvjn00J/AfiHIGFgHFCjKEoDgCAIG4BFQOWf2CwE\nPgZQFOWYIAhWQRCiFUXp/JnX/k+hwoKR8RjDxqKcfRvlq7sJZg4nvDMcf08ZikZAO/0DOP4QhLRC\nYjbic5uJG5ULmhT8ObUIlmhUocOh61GofYRZlnQ2avVcFn43q7SzQHBC8hTchQ9QcdPNXPjFF7gm\njiYYpSBED0N4sxuWFhFcfzfyAjUpT9ZBbhbMnE1ocTGOYD/9dGNoq8aCCr3BRfuFzXjeLYLpMfhG\nd6KoQ1BGiEQJ85CqSpFGjUJxfoqw8xO8znAOqmPIsrlJTB2HED6Dn6TTOdJvICsHlG+WoTccQ5FE\ngmYT9s+uwdcgEdK9AbU6gNuooTtbQ5KqCuGie+mOiSGp8VVqRgySWZYI8KusHwAAIABJREFUITPh\n5B4svj68AwKBARHfNgPq++7HfW4DpsKX0evGQMdBhI4PocwNVVZ4tBjkQ1DxAB7RhWZkO8KHOoSz\nqZjKD8DgJtBZ4YY9uD9dwsD0Anh3Nwknl+NzlDLcEMnuvFiaA17idrYhTlWzsG4k/RzGyc2E6AoQ\nM38Fp9+HqVvhhsl47lzC2cucFFYvRkgeDaE5kDIb52UbkUrqCdlTgFB5DiWoJXzLNsIvzuIkFzP2\ncAfD7yhBWHcziJ8ianKg7itUqhmIRRvBswrqPgZHO3x/E+j6oUqGgBenEIKizUQQdf9xEc64CVQa\neLQIXmmEcyuYenY/VElDnaOvW4uq+jQGSy2G754jbrqIRiXCV+/CkTfh0pcBCPStwR73NGHzb0fc\nF4clspnJvQko7fvwZY5Bbf6WwiQbAcWPFJaL4P4EZW05/p5vuXxRFIcyitAqd2A6cidWlUKwY9/Q\nG17IRQDIdXtRjr1OaHolJqEOQavC8ulOZKGT4OcDBEY1EuZOQXGVo6RKBM7nos6OIxCqQ3pzB+LS\nqznZm0dK7EWg+ME0FkxjfrEEDP84ecLxQPOfjFuA8X+BTQJDrSP/LvCIhxicWoJx5FtI8qf4nqzB\n5xUxtjjhg4WQHAMdvdCxH2aLiF4bSqeWQF4S+u3lsPAZSLsFmr/B1PYYMZnP0lZWTXpgAJLzIPtS\njq5axcQnn0QUBLQrf4342u+AXljgBeUEngUyum3AqQ4gCDoLqpuXYF1sgS92Eaz3oowAteLAXKxD\nuzgXv7kLwXcjIRXtiKl3ojS+DvYDyCEW0PqR3b00RwkkZIRRtXcJmVMe+r+/OXj2OMlr9jGYI2Mo\nSKKrxYf77WeQLWoMaV8QPkFE8rmRzQa0kZEEpvyOraYKMvqOMaKkA0fBPFy9GwgWb0S1+zXQx5K8\n5Bq2ZwS5pOkwCdZnCUSkE/h2F86CTehPPAe2MhjxNBy5DyxA7VE8hVPYkzuSuDOQedCN1uDGdGA/\n3kgNgrMBbY8X5empGNvAuG87cryCasM6lDI3hEYxfhRo/G7cBaMxxvZheuMhjPZYvH8cgTBmHygn\noNILmg8IOI5S+qCfvJN6VB1vA8kwMoVAoArHlIOYS41oK78DbSy+3Di0X9eQfX8zZa9cxdGYXooW\nzMeY4IHQEnDthKo9GGLOowDCqBshJAX0+8HWDEWjoOwQwU1zWCo62Vh4G8tSr/2Pi8/RDz++CDF6\neCYZVVQQEgIw4jnIWTVUQLP+MSJ/zMB+gwohdCTs3I6y4VFcM5JoyVQY8G/iaGwq16rCYMAGej9U\nuCF4I4LagyryI/rlBSRvmobwzWMErotDSahFaOxGOqeBuaOYze28K5azdNxzFBy4li7fACQsg/BC\n5JpqvBPnI44ZSePmDJKPJmBRRyPE9UPts1RnhpJ5PhS18zw0zMJ//CCunZ0IOjumuXaqr8llcNhR\norznaJDCsaTeRAipqH7KF1b4KeXzF4ZfSp7wzxLwEQRhCTBPUZQbfhqvAMYrinLbn9hsA55VFOXQ\nT+MfgHv/ffM7QRCUxYsX/99xTk4Oubm5/+17+xdYY6sYccHb1BxfSs9GIxmGDeStbqZk6wqs1W2c\nHraMPHkLcS1nMGq6EXwyigiBCBHb6AR0xQEqQhbSyGSy936OKluNOamJDYWXcOujr6JSgnwfexl9\n59swXHYZMYMnmXz+dVQa8DdJ2OMS0Cf34JhpRnfChtBgRS14cRrDiNhRS9ecLHxaIxHaGoRyPypD\ngL6MZBgtcrTuRnL4llBtI/6gDl2nnd2mh5AFiZzSjVRPUxOW2Uv0Ex5KnSLCpUNOnX3sdTQfFKM1\nyvjC1UiLrVRrrmOO+EfkoJpggoBK8SLaBDo682nKmoBV20iudxs/lBYStb2U2FQ/IalaPKow/CYj\nloJmhGl+On9IJfpUC3KRQH3LVFK0h3GMNKH+XsLc0sn2yc8xb9eDiAkyDbrJtEfkM3b4BwQH/TTU\nFpLaVIrdHIKtOwHJqyHoM6CXOkkYKKc1dSSh5xsxBnsRQoJsWvAW8X0vMf5AzRBZXQhyjg5/0EDf\nSDPu+lQS+kso77yYJKmY6oJ40rdWEYiMBhMYem3o5AFsF4Rhq0ojfF0b3jwzzaFjKWz4EG2nA2VA\nRenF07FN9dEakktBdyX+c5GEn2jhTNYlXKB7kVZXAZHDauj1DSPGVo6m38khza2MiNxCuK4W5CBf\nRl2Dcu7fSsyqRScj+jczrH4fmmo3dINvkYazrjjccfNpM+WTYtxLxFunaEydgSffSszMbUSU+vAY\nApyckYeneDKto7tJafYQc0hDctVxUocfhG9BiRI5u3gCIUE/Nk84CR+dwxkVgXqpC9M3DbQPyyKw\nyEPUmwMY7b0cm7eC7SPGMq9hB1O6v6NPm0Ht/onEHiqhf3gKcRNLKZmcR/z6XirSf0MwpJerIu/C\nvcuMWK9wZtbl2O2RTDr0R3pMKVj6bQiLvPwQfAqdf5D4tneoLfw1SrgT0WoDMQgBNbLLiGh04Csb\nheIy/bf8+OzZs1RW/usL9ubNm3+2gM/DyoN/sf0TwtN/MwGfn0vCE4DfK4oy76fxA4D8p5tzgiC8\nBexVFGXDT+MqYNq/D0f8LVTUZJz0sRpN/zSa7t+LLj6R1BuvouvjeZhjwLnGi+GqOxETUsHdjiQ9\niL88AalXg29xBfq9AfCKEC6g9ofh2GPHtPpOhEn57Gv4hu7EcVxSn0rLk7eQVKTBv7AFUTYjvatB\nePAESkAgeEs+nje0eOpHodbEYznbCh2HoGgxFGfApBkQuGGomit0DRy7Ccak4yluQpErUGFCM30r\nfPsgLP4IzNHQUELfm6tR6dpRHe9BPWYBm4fP5MrlV+M6fhzHHxcgH+1GP2MO5lenMKB6hbAXnKA3\nwUUf0LL7fsrnFDJ3w2aI0iIXvE+taQ/p1WbE2jL69Wrqmo5i9eThqz2DNsVD6DAfpqnDkYp7GSy6\nHWP9nQgBCfoW05l3hvDv7EjDr4dLfw/b10D5GsiZDNXfQ2Q3JMyCMgGW34+t5BrkdSrCzncjPPMJ\nFBTCfUVDPfOuuhtl/QsEW7uRlj5EY/km4hvLkBJ9MF6DYgonECviT1lEUHUK874aGBaJXd+JYdCN\ndDQelk8H00oIZsEjC1FCLAgrX4NX7oNhPpQrPyTw4XTU506hBAqh+DhdW0bSrbFSYokjv7KRYZWd\nOJYtJLZ5NELrKWgrhphalAYHFNyD8NnjMO9maH+Ptsgr6bT0UZDzBnhlOPQYxOaAbw2cFYEoaKol\nUD8AVh9ndFcy5smPUQQBzw0p2KaqiHMuAZuPtrsjEN2HcfafpSM4gZbYyVz4/Ua0dh3dV9QgqmOI\n2daAqJXACXWtqQzzBFCKihHCZoN9J0pnAfKUt2kJfZM4nkJUegnUrkF6/ge8Uy7iiasmc9v+14ht\nPYysHYWYE4vStx9/+iD7oseRLdYT0pFI4HwdIZ09qD8LImRH0//sFjj2CcGPSjHH1+Ne4EKfOAdN\n+OcAbP/4OS4yH4GiJyAyDwA/Thr5lnYOYiCaDK4khJSf7dt/DRW1B5WH/2L7p4UnfrEt74uBDEEQ\nUoA24HLgyn9nsxW4FdjwE2n3/z3iwQACGuQdC6l+620ynnySkPx8OL6d0B21BC+bjH7eEWRbA2J0\nAmij8YXp0Q/WE8jUIyqpCEYvgSONCCo1xMuo9Ebkyl2ozr2CJiyH/aPymbT3NqKf8RBUolHvUiO0\nhuG59Wokqx2xu4xgoZfBQRnJU41kF0H6FpyhcK4XumqHKqvyqyFyOIr7IeyiGWHHHjzaaASvlfrw\nGISdNzDyZDWaI5mgtUBPO6Hh4QTqOhEK1Eg3LkE55ADAMG4chmkalFzAJkOJFrUhiDJmMUJnE5x6\nh4TUBfiPHEI57YHIQYTay+heOR/NuDmkLHocvdAE3Mmw3tUoognX01Ox7dbQsacDtd1GTPfdDEwI\nxxwpoupswhz3WwbnHcA6+qdFnTcN+tuh9g+Qp4HSUeBtg9SFMFiN1XOOkqLLCHFWoK49A9PnQe5o\n+NVrUL4XnI14Zudh9Hv4P+ydd3QUV5rof7e6OndLrZZaWUKggABJ5JyTiQYHsMHGGHs8Tjh77HHO\nnrHHOWeSbTwYjLHJwRhMzgIBAqEsoZxa6txdVe8P5r3dnd2d3Xl+s+Odfb9z6vSprnuq76m+39df\nf/cLyXtOoS7qgdZwHlEZRlu0mnPJn9C7/BRd5iLU9iDV3qEox/30MI+EqBMQ/BHCp8F+L7ywAdHR\nDO/eDRjAloryaT5dy1txDhCISBlatIxztQ7H9KNc1A2kJN2JyGsi0z8akTwTqr8EkxlOtUPecAht\nhNG9oHULnJxC8n0PYyl+BVovwv5nwVsCCQcg+V0oXAL+ENrdq/BY3sQnfYX6ugYPX0nQ70TOH4UY\ns5tARyqmxJm4vn2Gkiur6NbRgDh4kkFdsGnEJAblL8YhXaQt/Cot4yuxFzdhlkKowThCXi/6UzFo\n8ZshHEVL/5tpMbxGxnYn+oufQ7QL3eWvw0c6LOu+4sWZLxJRwmh3zUCXkQvWC2hyIvqmTJxmI77Q\nRfyRetQsC039uuF0ubGdDFAVfozQYDdObyuW0nishhHISsb/kTe3Pg16ZcCyfnDtTkgfix4rWcwh\nizn/FSL/VxH8haRX/ywlrGlaRAhxF7CVSyFqn2maViyEuO1P1z/SNG2TEGK6EKIU8AI3/exZ/8fz\nomH1alp37MCUnk7/b75B0v8pbtFkpbH3ELpdfw9a9X7UhP1IcfcTRiZ83olshvAEgaU4gmSvQx43\nGfxBWPQk0u1zacy6g8CMnfSoKWRi4CdKLu9Fjt6FjA16htCd341x/UOEDSrhqS6kqSEsOxU689wY\nTu6Ftj7gvQC954I4hLr0FbQRlyHp13FCXImry0hS9WiiWvaAIx6vFubIoBwqcrOIb+hg4LHT2FJS\nCBZZMOZ4EfYgnFpFftgLh49CuAutexYY6lGce9D98CO2sAKOTXDTIYjOgIPvkbaz9FI1s5ABMWo6\noSSFBmMLGULgUXdhqzHgP/Ydpvp3MY8dhHX0KChdRUjxI8WolKc6SNRacQ2fiLk9CSU35VLWGEBS\nJhjXQGomXDgLKTGwdzeMvRaeXUnHwnyS7Fn4+hcRvfRVyLtkNWF3wvCrCJ2cibhYibbvI7b/6l4m\ntGyC46D9RqKrcAGJR32o3bIxlAma+8XQ5akkeVoTDbYy4pfb0aK+QLYO+KcFkZAOT34NT1wORzYR\nrvTgL5RQ7nkH3c6XUS83ItfUI7iaUeXH8Zwu4sL8XFqPvYC1Ryp0FoOvAyZ9Dv4GCKxHU49BjBMh\nn4fYXjjCAUgeCpe/BxfvhrSPYN2r0FYHiVmIvZ8QNepqrI7FHBuyHNWRiCewjLi32nFE9aVj4oe4\n3vuaI/cPpaCsEjktTEqXgnHITAb1HcMfeRmrKpjfAY7ay/DoNxL8yYBnhp1jQ6MYdKgnkYiTI+Ua\ncv2nSC0yhbo0JE6RsMVPevEJxJCRhDd8h5hwBfr2asSyrWjDImhxRWjptei+NzFQ1sGuBpg3FjW4\nCym6P1q4nMhFGxnh27C++zSBfRmY/7gNTj4CP60GSxBG33bpWWfNulRb5dBLkDbmF50190vxCf/s\nWWiathnY/GfvffRn53f93M/5ayh9/nlKn36avitXkjz/zwxzRzzHB1xPN1M+wt8LKfgMauAuPEom\nFtso1N41EDqI1Os1kF+CuiLQp6GUvoM3RnDCt5QxSjzGUCYzN47He/WvWMFGBgddDDn1CiLkIJic\njrz8B5RqP1qqQH80RMU1KViXB9EeXoOIkuHI51Qk6fCndsMcPE3St8n0zR+Nrm0NOFvA6Ias4aRZ\njXiHzKKLj6nzpLNBttL7g1O4HxlGmr0HSWU7KR5qoq5FIKXb6OMBodwNxfuRR7yC+v7HhKytaIMt\n6No2YDDMgdJWJFx4J4cxtOgwesvoe1BPc3oFbFqJydRIj2N+JG8QbVw8UkUZJF4AQxwGnQxRUfQq\na8Cdr4eLLyPO6rFnH/unZ9xyHLWjDsnnvrT9Wr4BPBpsfQItdxD6o24skfVo7nq0kIp49VkYnYXC\naboKl9FWVkr6wfMwvA99hq7l5aR53OzuIGF9J4bFfoROQ/7mJD6XHb3wkbG3icr8VFIr7iKYWUrE\nWkoUA/7l9y4kiG2HRoFslTANToH2N+Dma1F/XIlk1BEuuwiHqohpCcOVQQpHxBJ7chlW+zSIqgCT\nivCehkAjmnEW2v7vUQd1oDtQgBbU426ZgaOpBmqaofxKKG6GUfeDJMG2l5HqTiOl9Ue6aAH1dxgG\nZkNqGubqszTSReukZroXCdrze5FwoYagM5n9tgN4607Qz5VBTvPnqKUGiL0M/TeDaL9JwpTlJq4y\nhBQ/Cy3r15iGLUAJ9yFtlUpCx/c0DMrg6IjeHPmqmbybF2MYLRE+eBx7ixVnVS3GI9VoC0xIHTmw\nqxCRHo3WNwDKdqRWCdF0BpLAMzSKqA3r0Z2vRbENu1QWM6MH5F4NjTr49mEGV1RDYx+IGwUFt0DI\nA0b731ze/2/5RwlR+8XhOXcOIUmMLCzEXlDwr3ZmtfQsdEkbCRpOocXo0fRPEzAnY639CPlwBqHc\nEIYDgyDvNIz8HLy/ImjtQq49gv5eB4M727EZVkOyBeXte4i62sYw8vncuBHX4E/pQQoSDbSlLMBi\nKsa0xIMi63DU5hEt6/E//RTmz1bQUpBFqOx9NIeB6F0XMQUssPkFCHogIwOldzYipKKb8TF9hJ2G\nwKf0+XATrNMQX+7iUIaXHaGz9LZEYXA46TqRQp9e90DZi+B7FkZboPo5pN9txvTKs4T7PECg8zXC\n5R9i3lGNlBLElJtF8HQLhpIO7OFmytP7ow1pw7TGj4gBLVtDtzcAsWNB3xsGd0BTCcgR5LI4PHHd\nsZj2YD4WgM6n4Zpn0BKyCNZo+A870PVXsSChyR46B3UjNjYetu0l3M1Bc18b6Z0q4ZR49MsL8T1a\nj2hRsS7bjGlXF3I3lYaWDLS3Srj+nuE0ZG8hujqApaQNcy8V/ywDh7NHkb9mL3JvyNpwEZP7J4I9\n/EjKOP6VfIW8oDSC34D+ij6IZ86iW3CWiLMRJbIVraua0IEDWJp8aAUSI9vT8VRV0WlzY8l7Ebw7\n4dyXiPazoIFQT8IZjdoBTiLJbTiiO7HVFUGlA3zNcLLh0r+OcXddUsIDrwVbHNScILPwUYSuBtPq\nerSDZsSEIYSl3rSHimm26OlbUo47oNAcFyS//jhxDaXg7kQL5dK0IsBnn2jMK8rCdW4c5qzJnExZ\nguvUm7i1KqzyeXbrR1Az0sTcczGkiDiUo21czK2j9bUkEqNG0f3ch8hGO7qghDJjBNK60yCaYWE8\nkERg13lMiV5oliEjDGYwp6YQrj6N8OUjuWLAvx+6VkH4EGR8AD2Wcnrpu2TveB2OfAlXvw7j7+aX\nzP9Xwn8jbLm5ZD3xBBoRgqwixLfIDEChFI0wAgOuVC+Qi367DynHjzvxbtTQQaw9Kon0kDEcDsH2\nA0QqT9BoMBHV1IBsULGd0eE5noIYD9jtBL3V1Gvf009Mw8ocfuAwCeTTxu9IHPwS8to5iNtexxdj\nI/GpWxEuGePwASirR+OyHcI18BsYsBd2vQGpRrTHTqF+Px/vNUno/B7M6q9ArURpqycSPEsg5CP2\niTykhCgm+qMZX1XIGSnMUSWJYPYFLlQ+RXYoAdSn4IW5cJUV5M/gt1b0WjH6HqvQvryTSM9GvGaw\n7StD0ptov62AmBoXEX0C2pvHke4Pol400HUxFnPv/hjvWw36P/nPtm+BcCuqYiS1Jo/CcS30zBmK\n1boUtq5CbTIgQj0w9DMR3NZFYCxE4iwoAzyoneWol5mxnPTDMIVmXT5Ym4irScHcGYX2UTtaWR+k\nG2NRqypwmLzsL0zGPmE++TP9tE9Npu1CEvLQy4gOfsXQ47vwR1+DclkLfl8E80M/YnI3orRUwFUD\nICrl0pxDbjiyGDQ3kAaz9yO+XYhmcRLhOyJ9K2hvM5N0wo0asaCOGY10zoMlkoq+53nwfQzqJug9\nEs2yBiEXQOEexIDVpO1bgSqHCSSoVGYMwdYth7jTCRjOrIXfnL6kgOGSAhYC0gdQpysgw7EHfVEI\nMSwMKSHiTgUoGpKFpymaFlM5aRcacB0+BuOvQEu5AFUqWvNp4tslpp9vZf3Iflz9xnZsMy+nUq8j\nKykHxX2UKJuPy07sIWSYQ7s5hFYdIn1kFt2kWYQLP6Iuaj2nZvfHUttJaqOGvWQvmk0gRVSIN6Np\nbkzjfeAAkSVBfQQRAlO4iIqh00k5okfXLRban4PACUheBtKliAe/0QlTX4Ah10NbNTSXQnz2f7EG\n+M/zjxIn/ItEQyXIl4TYiYYHA9PQ0QvBJb9wxZmVDM8aDqEYKLyI88Kj6HJCBJ0yupowItFGp9eJ\nEijCaRyBKUkhlNmF8W091qQq2DIM0udidEbTUPgmjf33MYDnMUUqOKW7j97bFxAsfwTZXQsjB2Ev\nb6Rr4tV0ZB3CcfAk+thO6D4CzfIdoRE7kQMSWnYz4Y4CDP1N2GolJE8LdC6CjLuJfF2GzuzBFpWE\nlOGFEzeA2YbUdoF8rYa8pv2cKU5CyNG0DZqKc+tymP8cdP0eXO+BFgLfeiiZjejRjJxyNdZD+1Hs\nDUihaKK3XgC5HiwmtEfmoCX5kTiI9LyPtveGk6T/pw2MSMJiwns/ILDnAlEjLtD9RzNNfSaT7vgA\nXdZodJ0RpPXXY6irxN2zN/5HSjDMcmHypOPNWci5KVdw7sq9TPP/jlqnk2LG0XuUg54bf8S4aivy\nR2OR28PQ2ojp1pU0bTlA30W30LZpMW2Du9Gz/Qr83/yOQKYgpsJL1PhVeIIFRCxWtIxxuOeaMEfP\nQRfx/9OCMESDcx6MnwjfbwNNQ5eegVJbi5SVipdkXCUV6NokeGwz8qH5MO0A0r5dGBffjufOIKaZ\nx9CLP1XUaKyB314Jt/6OioK+dDf/hKkT0r44SmTQEOqyalF/M4LY4BaizqhouaORCrfC0PlQtJc+\nJzZgSPMjdQOG/Qb6XU5L9U10OEYw3nInxvpBhHOeQj7ZAce/QVunB4sDUduBUCWST/3EtIIwrdXb\nEWopHukslYlDiK3/nhj9GLS+DjK+P4SI6Y0SOohPPYTh2ET01cPo1uih29q1ePq5qMm10pU0HKW3\nQsE+BWufR+HDBWi1Mp5SCfubnyBCb4D7IqLXAOLclxE0PY3BXgOuLyB876V2V/8cZ9ql478Bfyuf\nsBDiFWAmEALKgJs0TXP/e+N/ueksPwOBhIkbiWI50WxEpuD/KGA0jUz7Dtj3KgRawW9AystCsnnQ\nuXW0d9vAN5MXY4j34hgA5tgm1HAr4mgn6okGvOXZKLpUOP0KUvt2stZHIWPDXf85CSt/jcP3CNsm\nOhBFu1E8EkrzOcKfXE/7VIXGQRr+PB+qlIh29gxhbyrSN81oMUY4CR6zhhLVhBo4inqsBDx5aPGP\no0kDMdywAOPcWbC/GqzDIXke6FrQBm2ky+GgsNdVZO7vwv7pc7inJaHMfRgsBji3GiQT6qEuWGeF\ngZsR+mMIWwmBm6xIvkZ08XOgA/SGTkKB/Ug/uBGeeSj5Ktb5v0Mr33Lp0akqovl7wjGPoFONSEFB\njMGDw/Ql0qltKAe+Q2m/G7WgBhzXk3SoFNf4eKy2aMKbozGl3MKg2ALmKg4c5m8ZsO0ahm8uIpz8\nE40VHez54i7as4Ng3Qb9QtC+GdVmI/bKGWhPxtKjroOItB5TQwBrsYXOYCydkRmo/gpU9hC44xBK\nZB+SHAMx3f/lojj9PeTNgolzIBhAl5aGUlODjnycuqUYRo6DKQ8gDj0PBSPBno64bAFixBxsWyP4\n6p7Ed+4qtANPwtqXoKsVktJw9V3I8cZ+hI/qMVqdWE9+SbcLPUjbm0Tw6BuUqvdQ3DSC9obP4Pnr\n4NAW7IE6hBWUMU9SmZtIZOXlZJ++wMiidVBxJ/qTa6lIj6VrfAqEjEhaGGl4N4ScCv4IytozeCp1\nnLsjjx8an8EfsePwH0eq7MK0qZoTW6ZwxqIRqTqCGhOPEpvMzslJVOgr4JNNYBXY6hvJPaqjz1E9\nBrk7xTMG0rz93kslW98/hWpMQgwdCuYGMKdC5AxRHbdDRTtK9q2XWn5J/3cxv78U/ob1hLcBfTRN\n6wuUAI/+pcH/kJbwX6S1jLSSY2AuhllPQvadyJXXoNZH0xbswWlbhFlVYzH8tB/6mcG0gvDQHmhd\n6ci7/didm/CeHkxU2k2I6qXYK45T0N/FyZ5/JLPPNfRa+ge6rhrI7tvnMPrALhpDr5Lmiibt8eMk\nL8hHS3YhddsD5zTkP/6B0Mi+mNKehNVXEfdlO+FmGc8AHb4pWWCoweJZjOHWiSjafiKryjE0eKDX\nOQgmgAjib1mEzV1H1ukKRKgK2ToGzXeMo77FDPEZEfsfx2vsh/nD22DWg2BMgh7fEpTvJBJTjOLK\nhJOfIcWZMPkUPMcDmDfuhMRSDCMjtLlcmD6/F8PkAkT8aHQ+QdTsdEi1weZo8Ceh2XTUz8gioej3\nKGVdSC9JqPOOobtzLIYaGcOo+zBm9KPzt79FVpuw2UoR2YNg1HxM/Z+nQ32epMd9TAj4QV0EmXro\nvgx2T2KULpbaNd/RkGHHZLditF7ElNQdw4VSlIf2sCQhxPTARRzhEty2BNTEOkTNJHBGgfXXYL0L\niL3UwcQaCxOuBkCXnk6kuhoj45HMZ6EmCuGUYcpmqPhT5pskwePLEAdeJfrZF4gszEA7uwFNpCFN\niofmJVi7bKixdpTDejjXiIjORYtZjdQzBlfVVJzfePF2P0s4rg33jKuI/q4IS7dONFmisWkZUvKt\neIaD40gU0a1O6rPNmNU2TF0GOuOisCfmUeWycdIdwZVloWbBQAiWvbA/AAAgAElEQVR0El26l+hj\n0OdEK91m7UeZKFF7g4p6dRUD+vyBwDWDkPckIFpbEIEww+Qf8Pj1HHgkn8FvH0fMzUHqasSUOZkB\nG+sQ+79AzXXBuz8iPfcicoKX8E/jwdyGvr0D9FaQLkek+WhKq6V79Uvg3gDx58CY+/eS5p9F6G8U\noqZp2vZ/dnoIuPovjf+HtIT/BUrk0uvFE/DHRbDnLY44F8H068B4CnQWCFwkXAyxai2XPf85hmdv\ngtPrYPluOJuKqPCgb2hDymsnuFUldEKCmKGI+z+C5D6IY5+SfyaP0r7QNX8R/f/4BvaMCP743kg7\nBaH4MNgiCCUaX3YU3rSrUAreQNQ6MTadRqteAT47aCBHNKL360n4ahrxO4ai//VqtF/dAKe2wqbj\nqJMFdJ8Pmp6wXaU+7hakco1+e1bBs9sR6VHYL1aRt38NTcNHoNHJ2duvoCFzNiz4/SW/pDUK3F3o\n67ORjtVROtFFsELBeVajY4oF9f6X0G6+FVNGEH1/G96TLaitJtj9ILQ3wIXHwB6GCYvBe5aYhgtI\nhs9h1GPof7oGnS+C1O8QSs2PaBcPgPsUuthYYm4cj2z003ZAIzzsThg0k1TdJBJ1M1FNsdSmhiHn\nNsi4B/wfQ+/bsYXrqeheTY+mSizVrei9I4nYQigxEmrXQ9zQ+Aq+sJ+9x0YgSkMotWGkNVao9UJg\n+aXykGU/Qda4f7Es/rclrKkNEFqJO90Aw16EthLw/LMaEJIEvSfCCAXdbj3qNWECAxXaH7kC36xr\nESPvp2+P22kalIPXkoY4eh5R70UcKELb/zo6KUz0EQ9xp6OIWrUErWs9Lf1cNPTuTluOFfP5ZfiG\ngBr0oWCgM70D99QMup8ZQcBqpVZq5EJ+G01z0knRpXL52HcYEuNlcKyEd/Yc0gb4iHrMwfEhYxh5\n5Ad63vcYaSkHSRHTCWolSCMfxbijDNv2PrjunUPWVV9QOysNPi8i5FepzT+GdnQNypB0tKtyEGtn\nQ5/VGHoG8KXqUOPjQeoL4QQw5dA5Np70kx+AtxX8RhCx/1WS/P+cCLr/9PEzuBnY9JcG/GNbwoFO\n+PI6MNrA2R2mvwRRiXhXroRuS8B3DEquAK8Jo639UnWswT3BsQKmu6DWDS/WoNNtR6eNhtoBOFcP\nILD3Ihz4Fp7+FrFzCVraA8itZfR9uZ3CRzeSepeNLGkHXp0T/0ADOo+LYGc9xuU/Eu2+E63uLOLM\nh2idHiJGF3LjOjSLiuYGkaightsRWX9EdJ+CL02PMdWF8PhRu/civFJCeH+DKurwJDroll5M+HOF\n1gHdSUnrA4uXols8GMOVbZjLa1HiIpRUBHDccg0c2Qj7vgFfF2peIeZ3MhFTr8SYWMn5+40kBe6g\noeYIGaGniRyOwZgxlPj1B2nq7yT4+HoMT8xFincijAfhmQ7o8xZa3xa0LBOWi0lU5UaRaauCAjPa\nxWj8gz7Fc/5ppHWriJLikYdciXncQowdHXQ+9hjSxi3on7iVWGMOHdnTUVq2E+RDYmxDcIZr4Px3\nGOU25Lpkols60Hqb0Q5UoWtNQowbQtTnX6H1jSYyKp3MdXUYfjyP+249IVsMpnUKoMC0hZdaMk19\n5l8sDV1aGkp1NQQ+hMhPCHkgbL0V9BYwDIe7ciDohTuXQN/JMGM9ouYM0jcqxl71SObLaRWLkJoz\nMGqj6J5nRT0TQbsli2BbLQ1yEv57xhEwB+j38gk8TU1YdSqN0ybitVeQXhPC5IzDkNUT+Y9/RIt1\nYtxbS0x+KqpjDEJ3BnvCrZjGKUxauhhOxaEcLmbl7iU8+OE6nuq5lnmT96LcqiPqOT9tz/TCWv8b\nyHoVCr7AUryBpux0DKX7kStldGMm4Rd76FTnEd2/AX91GgZfiLSvDsAwUFPKoDUd6UIBImsWeud+\nugoSkb87calWRuNQArpoApZadLE3QtU3oNmh8zjETfm7iPfP5ef4hIUQ24HEf+PSY5qmrf/TmMeB\nkKZpK//Svf5xlXBnPXy1EMI+GHoL5P1ZjVMhgSEX6j2QnABpNoiKhZqVEDsXBsZA2AxPX4fu0c8Q\n0TGgzEaKnYNlyIOgdMCKeERUGurG/YhxfRDFK+h52IWob8M3XkdsuBbnYR3mgB+lLwTNBuSm3xFJ\nNqMvbEBzSZAQQoir0RxrEGEN7QKEVqhoLoFu2kG0mXq0rxTEGCOm9wshsJaIezHV4fF035WJ8uUy\nlFoZhQihvT/h1wRhxxCUl/YiDzhK8TrB4D45ZI4ZDkSgYDwsexbVKRBD74Dxo3C1fYoWKMd2YCXD\ni44RmC6jzvBhrBuMZiiE7Ey0yyvp8pbgMM2AmpshMYRGJZpJIB3uTrSvmEDgJUgYA4tepjN4J5ru\nKcwfjkRfeQ9Vb75Nx2/fxjlxIlm//z2O99+n5ft1nBlzCzzYDfN0HSa/RJ26hvb2tTg/tqBO1rM0\n9XYsdDCs9mYiP2xEZziFOONDzEuE7mMI9OqBPqoY69150NGBbdt59KPrYIATrA4I1cG5LZdiVnte\nBr0mgD0NyW6HUPMly7cxFeKqUJMXIe3YA407YPid0HgIKgth5ydgioa8MUjGm9C2v40+ZxXxcQcI\nJX8Dx58B5wSkgk60ukq8vW4g6vyPxC/7FnPiKITLir2jC8+NH2L54EX8oVQMN43EkDsXre0BAuNB\nd7YJxSLj+qkRf9pyyPmKWLeB6pQPiUosgIOricx8g8sK7uPsh6CX70BxL8H4igV9cRvZy4q5Kfdz\nHi9cRKIZbNUhHI1mgsa1yHc/CXuLsVbOIyVjFZI3jH64G/FRNcrVWfgmzMAvu4m40onevA3rLfcj\nnt6OorYgxSTA6Glg7oXv+JN0M8ZD799Awkg4MQv+rcpx/034OSFqmqZN/kvXhRCLgOnAxP/oXv+4\n7ghrHNy2He7a968VMICvDg7eBQXvQeqLkDwCImUQdz00LbnUCvyUFW5+BvHcQqirhJR+cPgLqLYD\nR8CSiIi5iLAeRKvYRiBbQrXpUDItyAc0zAfA2BpGVIIsJ6O/YRC6aS3I8fWIeRrS7RqysQmMGyAu\nBVWnQ+kOhlcFphcaMF41huhyHTZ7O6SnEjj/IZ7jy1BPhMkoyyK8cwvK3CCdt+dzzhhNzepv8J07\nh+/KLhyZSfi7JuO6L5eUxfchLX8J3nwY1n2GOnU2mFMptJyn7PxujI3ldNvfSUg9y4reN2L9yoWt\nOYhWXUKoVwpoVbgfjGA4YEJta8EXeATv/IuE58topRLifBMsaCYhMgnm3YkSJxPIrSfcrR37hxqW\njB5kv/YaCRPH4i0u5sjv3+S3a2u4py4G7Qk3fZ3r6beik5wVMPDRkzh3VdDZ+COnXzdyKDGPa85u\nRpy8H3nyQqhMIOycgvZCO3Qbj/bTGkKiE83UQOjF87S/FE2kWAc72kByQPvXMPIWuPZTMDvgm8tg\nyeXwwx/QKorgzFkoOkDnBxdRGkpgylxwt0FJMRzfC5s2Qe0uEI1wsRa2vIUQPRHfbUNX9CpW/cOI\nvoXQFYJIA2JfIjHVYey9EzBEhRCnfoALfiJJqRzt14x9honSPpNh0/ewexdaRxe0SmgFoPbTkKxd\n6NtKCH0/Bl3hk9g6vYQHjIQYO0bTUhJWziMuGmTrt6iJUyBXYLM4mHSwkE9T6lFdVyFK9uE7vZfa\n2iZaZ1kI6Jx0TXgZjq5F9gxFpIUQfYbAlKHoDvXC7nyS+A0SyWsTsR5xw2s3Q+d56DqNsAsYMo+m\nXrnUz74X2W+GVdNBigLFCdIvNxnjP+JvtTH3p0YXDwGzNU0L/Efj/3EtYd2ftVfRNPjhCyjcwfCy\nUhBPQ/IgcPYFTYW4R6HuOsh6Fkqvh+F3w9f3QXYB3PM4PDERslRI8UPGXEhQIakXrddeiXHhfVhK\nzuN7zo4t5yOUrW+hNP1IfbVEVKITk70Bf3sv9GuPE64W6LwykYMqwbndsBaV4W9JR58VQEtVCO0X\nWIcJhF1GHZWAvK2R4CQj2FMoC17A1FJOD18Xqrme4OR7MHe+RfxQmZaei7nsuuuJUEsHVYSb5hD3\nyXNUxUskzjHDjPcupSkf+xH38d+gq6ojlFtJx6GdpEjVGGUJ2acSmRFGrLMhtnrRkvcikuJoHWEj\n2/pH5Kl/QNm5BN2sKNoHKtirvAT75mJtbERqdKMZ5hOouplAXi76VhdaQg9EjwHw3kNIl49C7dbG\nZ5Yb8Pj13GteTb/rC0B7kq6otfh6XEfNo4uIbWghWh2BvaGcPvpdTF8Thc3VCokGxK63EC47jTMX\nYji7Dd/X5zD2iKaqfDF7Miah63KSn7qFNY/eTvLBTPLfX4Ovh4Pt060MrDrFxOxxYJ90qetweTP2\nm64k3L0fNasXYrlORdvwJvx6Any67dKzemw4tNVArheEDOUroD0Ebjuipjdq7Aq0nccR9hwwHoSk\nIExKgNLPiTic6MUQkHahRqkEolXGHvsIEZOGKb0Txi2E3RcQDxShz7XS8WhfzvQyMnLXCer6dqfG\nZcGQ1o7R34hyvoxEYxfazjOI5EpCWybi792KsTwbf3oQa69G9Enz4KUbyXnle+iKhshFrFPvIKr9\nDsrCz/DA2WnY4j7mbX8TsbFPouM6xKBBiOQQvPkSWMrBshksOtRvv0O5Khuc/aBwG5rqpphtjDTd\nBlHvgz4f1s8C1ygImP9N8fvvwN8wTvgdwABsF5fStg9omnbnvzf4H1cJ/zlCwITrQQnjPLED9gcg\n3gttb0F2HpR8CGOvg4rLwTwUUl+G6bPR9ixC7K6AUf1h6w40vx9Fv5ZAWhIR3zqCZ/ej9fWi2gw4\nyjR0J+YTKW6jqUwPgyxEht9Le6iO6DXvIiQNHRIiewy6rEQkRzHirAPTovn4ly4lODYa97AYgtUe\n7LVd6O97DhElCPaPRdVVEm0uIzazG6JbJzrlO6J7qrDaBZ1NxOgqAehkKVGRBfgOP4vWVU9CWQ6U\nLQHX8Ev9yPqNxpBfgGneISzmcro1VVARm0jd8ERstWE6ouJoeqE7rrrJsPt9pPluHNo4DLufB0cz\n5GmEt3pxxXanyCKhd/YgYWE0onQYwhjAaBiMo2I02lkZ9+xW2jJLaIqU8fpnvdBxDfesfYpe91yN\nWLMWJt8Nsh6d5w2M4atIWVyA93A28aNzEBkXeOXoUgaeLwXPEJT+/fghT7AzksmN2+7DPyyT1rkD\nyCvaTfKGJbRN3o2pupVgXzt9UhYQ43sJ06gcYvdVccuiP2COMqI5PAgtBGkWCIQRI1ycv/099A8+\nSuDQNoLWOuSHLkPcNx0x6A4YeiX4mkApAXM51ObD7Z1w/CBiwTtIoSbUYSuQTtcj1HGwrxD6XaBz\n6k3UusrI/WE8odxjaEf8WBt9qOdVdHlDSKk9AfpZMHE0SucqxFEjykUTrr6zEaqbzGNNpPd+hMbn\n1uB4/0PqezxO/Le11I1xoWYaCE4JIJRHaDGvZsAhF1JWDoTPgbMW3h0OhjpIm0CC/TDofMTTxEeJ\nU9jftADp7LvIPpXzfT4mp//v0ZWugcKLcPEAXNcL7TYb6kOnCA0qRq/1YlfVfIap88lLGItccSdg\nhuF3QfWr8NN+0K2A6b//+8n1z+BvFSesadpflaHyP0cJw6Wd7ik3c6Chhqk3PAYqUHIETuyAonrY\nexL66SB3H0hVaLMGQsXnMHs3VG8Gy2HC58KIUBhTpx5ddE+iaooRvkZUl4auMYTq04joNBx9bTQt\nyiLaMov6wh+xuGR0oTjkKAeMTYSjAjo94PVSmucgLr2LwJUy0eVzqZ50BNePAZK3HEQxRRM43BNz\nXD4WeT9K6348sTokQypS3FCkfq8hBcxkKHuIaJ0o7IWTzWiH1tASSSHj3BHwPQyrMlB/TEek5qMt\nKEFntJNXfhq2CHrpL5JTV8M382dxrLUft5z+lPaWfQivhXIpjZjvvQRLwdD3KLSqaJsk6HMGt30M\nqZ8VY+0bxH9DHKLKjXdYIkr5cixKFzuL57L2zCQSAzfytHUqybs7UVN7wdjL4dReWPIs3PoCiiUZ\nKacNW08dtiFNsGkw+4Y+T9nwWSzYdCWvjb+a1j79mF/1Ci9KXyLNCsCRYti1A8bGI1Q/3V7YATFt\nhE6m0OvJAkomuOj22hqYex9qUyGt8QnUnDNhHTaM+NtvRzv2AL4PXsQxMANTSRXGr0qx+TqIBEA8\nugXdfU2I0DE474crZkCwA+p2QUUXJMjQdDsiGECq9qFmpyI96UVEXDB9OJbqFUSRRmv0ByQYO6i4\nbgJdpRfpubkdXcNSMhQv1Pth5GxEjY7gTDfutBA5kQmExYdIzRr69HEkDTqM997ZZPTpRiCjP8mT\nn+di+s3EXHThSXXhdiXQnl9C7M5KZDUPHtoCD/SFrB4w9VboPhJalxNx3Yo7/lvm1zyCiBjQrApW\nOci9vgaeCx/D6ayCswJVF0D5uh75OgXzO17CaWswhLLw6jtxNhRBsRVtykRE8njo+h6Gj4PCtRBs\ngUG/RmjK31e+/0r+ViFqfy3/uD7hv0CbPhsk/aWOsL1HwPVPwZNrId0HnV1wJB2t/To4+QXhouGQ\nlQ01G6FPK+LXNrTRLchmHaK0GmlHGGWvQGyS0GoyaTkzgUBqIo6eHrSoZro+7kPi9ofQgrF05Q2E\n8Yugthgteiuaz0/X9FF0le2gdmw8olSjuKeedvcQjGsaabsphbPLe+LNbsX+8LvY3i3CulHG8nEP\njL8Lo1u5AU2KEE70kdRvHx61J3LkCL4en6K/1o7dbkD0HQR7z8IpHTg7Uaq2ITproV9vhMuIWHkE\n8nMI9kxha8ZUqkIZdNXYsHT5iFbC5G04hyNUijK8jPae90F0Pv6P5qI2yAx4uZCohfX4Jg3Bdvom\nHF93EryiAlntw5HeTiLVGreN/ZoXMr8gdcrdSNOvRSQ70bxdoAdCftSTGwhLp/CLty99OaZ4imL7\ns9P3FjfL91P9UBo3dV/Di2XvknfajXS6L2LPBNpyY6AhgPjQCzFRMHYadIzFcMSH1N4BCVkEnt4N\nF84hJcfh8h8he05vTMNHUPLgCxx4+AzerChSWluJu3sJJdlj0IqqkD74PbqZEuzdRWBtHFqLFWK6\ngUsP4YEQcztEboTC8aAYEGnDkNQ7oK4DhuXDSQt06Uh9pxzTdg9uOYsotYr8gzaMZa1gc1CmjIOr\nX4XNb6NTOwgrOcSXVOLeMRuf1okSCcCPS9DNvB3d42upPSxwz7DjL30Vx3ozsX+oJWNfDVPckGAD\n2ZMPsaMulUa96V20oirY+xEggf0Z4qvH0X1ZF0rzQEhMwe90kVrdwDOdz3B6egrNd8WgfaAhDBXI\ncyyIeS+gumXef+wB2jKi0fWfg1oRRon8hD97BVrNRxA/G4Y+gGawoDmT4LNx9G/4i0EAvzj+i0LU\n/kP+Z1nCfwlrAtx0AFZPhSmjYMmnaMWg9p0EJd9CRQ3a1JsJj7mI+dNOCuuuoJ9zG0roIJGJiRjq\nfLSc6sRkqid0VR/UYx6s3hocRlCaQ8i33Elk8yfQWgwImH4docGfYSyPZsDj39L1q8lou8KMTLsf\nHrkC1d+O4u3FSb0dx7AMKrt30v3patQhMkq4GjErB+QG5FIdkmsoFyqspPXqwPz+aWTFiThYhprQ\nA5b/BGEFTr+IVHYS7auDGF5vRwtXIgYYYdkCIkopcmk0GXjwnDqHst9NIMdIl1VP1Cdd2BfUETyT\nhvXdd4lIPkwfXyD8go3ISLC+5MbXeRR3Sg1WzU7ngYOEr6imr7WZgU8uwG85jPHiZyDrYFJ3JIcP\njo2EnnGQEYe0/gkMTjO6KBUsXr7RaRQOGszwyE56igRKNsTgPHUEzF6YcC/k5IF+M40xuegHpxK1\n71v49gg4/aBKcKgNJmXS/YrJNN8skVofhOnXQMNp1KpzHPC9SWh7Kflfvo2663VKj1uR511BqCuE\nOP4cUvsKWLAKln6PXhSh1DdDx9XIzr5g+ANc/6eQz51z4ERf6MqGdS/D0Ai+IYkY177D6QGj6db3\nKM433IhTARhohtowJNmgqg7J1h0qDwB+NIfg7M3jGbR8BWHVjWgzo0uUCJ/9nI75MjExj+O86Uaa\nt7+B+epxRJ/PQFzjhfdvgygn3GKBmgoQSbDtY7S5j+KJjUYesB3xRXcMkTHoTn+CZdodRCYORm5Z\nivmTWtikEnN9B/0Hqzzhf5VuJUe5p2Y58mVz0ZytiAf13Nn5FieMfdB5DhJKLEKPQFfSAYGtqMOu\nQz31HrqqIjpmnUeOiyd6dyXa+U2IntP/npL8n+aXUsryf6Ql/O8SnY4angPr34UMDZ95HsYHH4e3\nfoCcCURGj0SWZiLmLeOtMwNQx6YRsoYwXmigvSEBXf84LFfI2L4rJny+BIu7E1EHIrc7IvprlB4O\nAs5MmPkWojkeQ40F2ZYOA8cRyfNjNo2HfRvh2D4kl532/HL8FoVevv6kSb3Rnv8IqSOfcEUuavkC\nDPZX0B3rQtQXofe1Y//6EMbUachNEcJ6A5I5Gt4ZDU8vhOJNoI5DN3EhUqeOgLsBxeaharBCOEZH\nrd/E2Jmv8PiiW/Gs89H8dYjGQ2HqJIn6t6Npf7WWpiI/LV063GkKSqQXjupHaR45i0NbvsTVvwFL\nQjs9Z0kk2hpp1RtoXb0cw14dGCSIfwgcNTD8TdSD6QREPu7lWwkkR9BvOI3y7Wv4Ps5h3Iaree7w\nGXJ+6MT5bR15dd9BfApE50HPKeD5BqU4jk5bkNa8UiINBhg2HCZPA89x6G0DRcVgz0bsXA9JGTD7\nKSL5E2mK0ej5dgm9pqXTY8Jc0hZOovuzIbxnThHTsgvPmUqYvA3qNsKcTHSZTuS8TOQeibB+FVzZ\nDSQdwb0voWQugJtXEPziS87MiaFzghH2f4S/K4Hey+qw1foRMwUcCcFbbihTYd6voeAa0g2HoexN\nKIjhfEYBJdVp4PZgCiVi7jUdbdjdaIEwth9W4j+zmM6rDpAcdR7b3g8IJXzB+QHnCLoEFDWg+pvQ\nGsrh+HcQ9iP2f4btioeRKiSU6/10NDXibg4hVj+C6bPPobwKgQ+6GWlLjaU2KoNXd6whHT8LJ7xL\nY2ECYdsi/OtVftw8kREtDRiPOQlPBf+MBPQ/KkSMJfh07xDuFQMGC4a427GcDdFs6IPImfb3luL/\nNH/DtOW/il/GT8EvgBAhVvA9TVeozDojsWPwbH497GrEMw/BotvRapcQVpagaL/F2zKaruAfCH21\nEiUTahu6EUr3YJlaQHjZAWSvl2APE8KnEekuoU+8ATIfJsr2OdKXT6JmG5EMQ5CXtCBc36Atvgwl\nvAdDVwGseQ8SnXQufAib6W1yPUPQ4vYjJ36EJNLgqZtgZAHB3U9hXP4BQp6E5ttOwkYvumtiEGsP\nQlUVsisd4+KJIG9Hs5lRgsnIg++G3Z+hO5GCFmPCt6mSss/m4MlopM9Pq8nIyeblm59j3vJXcIWK\n8V2fSEzIhz71VZg0D+W+YYgkM+rkY8ilVbD8UdKjXCi/vwGtqQZhGA9xJjr6tZI2UQZPX6CJiM2K\naDuJqDbCR7cQCORTvbST+LpWOvssxt5RhGSLQR0+GXt+ASI5m6zTG2HFAoRPgolPw9674A8TISED\nMaA38XVGorULNI2JwZ3rQZ6VTmzivTiWfol0+22IniOI+foHIrcMQ/ZWIQZdgzOkJ2HSG0hbT8Od\n4+D9m5ErfiLvSQsluwfjM83AljgGkTQWqjaC4wPwJ8LvRsFta6D9TbQDE2ja4KahqJa4SQl4L0th\n+dBreWr3Umqd3Yn8JpGea1ci6jQ0D4jhEoRj0IakQ/HniO1RyP2CoNWDJY54umg+1MVNPZZhUSUm\nhqpJkY9QYImiundv1CQLOVtXYZoaQdsFyicqkVQHFbelkJbhxOItJHjt5Zik0XBqM5RuR1R0w9Bw\nJfIPa5DvrEVMEYS+T6bzlXWYpg7Fdr2GzpdKXJIbe/0WtJzBzCn/mgHKHu4c+RqLP3iboSGZ7ZZ7\nmVH+ALJxD5Y3rYRvzEdES+hzXkZPbzABl1uxmhdBbhYZu58FJQSy8e8qy/9Z/n8py18Qbrr4lDU0\n087gzgp6tCVxnz4W9h+AjEzIjBBp3YB83IdFq0JVbSSYutBK/YQTdJgbK0jpL0FhC6IujDYqmZYE\nHbENoLvi19B2Fl6eh2XodDRpFIrvBypSDpMx7Wl0DRVoP/yIaVQARBHUnqRpuJXm5A+xiyAJZ7/C\nvDQboX8AjJc2Esy9uxNor0a8tICLMf1wIWEd4aOGVNqGpBKvE1T16seW/LlcX/4jjvZDeLsU2nfM\nxmWMInWIwJziIpJUy4ivXsKQpEOLDuOb9yANh+PpHBdLWmsM/kovnXNyia38LXTmItLTQUlG6I/A\nlC/BsQux5HVkoxH2K/wv9t47Oo4q2/f/nKrO3VJLLbVylmVJluScc8LYGIPBNhjbpDEDA5g05MwA\nhmEIAwwDJpiMDRgMDtjGOecsW7YsK+ccOoeqen9o7rv39+5v5s1dc+fCvJnPWmetrtW7q/p01/6u\nU+ecvTcDXcjvbcA/LBZmj4dv34WnPiAYKEbftg95h4SUnYN5yqPk1tUgtq8kesmdSPYo+M1C6Ncf\nkv60sFxZAmfCWE64wbAbEiLA0AIXy5AW9gHNS4T5aRyf30Pi3LG4IwK0Tx5BbUE7WpKEfftreK5N\nIatzBbrDVyHbJiNfugYSMtAiHkRcqIfrHsX72avoEjZgM8zHd3ItYtUuyC4E83hoGQdV6yBCgy+v\nQpueTrCwDEe3SkXuULBewpf3Xcoth9/BioGu/HiGPPAtUpIMuWGQQbPloN19Bz3Pvkyk0454+g1a\ndt5LQuJFcHfgCGlcVXqG2Wc+JHb5KtYobeRt3MuphELWnr6cq/dtQEcKlZUOUhsP0dMYQczdYSLi\nsnG/eyOq6yl0J2LRdr6DSBkKD+2HnFGItmbkh+uQ/thM+LAQr+0AACAASURBVLp2pPlGvNI1RFwo\np+vFAVj8pzFN6YOp/jTapi0wNIOsmgZWyi/x1KSnqcwIMP3wlxgmTIJ1YaRjp9Ad2Ip297sQ+R8K\n8A6/qTfwqehXbD8ZYra7DqKy/7OT/Qz5lwj/jLATwf3cDP42OLsapBugJAwlp+F3f0TTgoQGmzAF\nciFqIZLjTuKXfcnZqWmY0kLEurrQ1ndBtJ5gfDTS3nZicuOw5tei7f0YzepGJBeB9DVi8AL8J8qJ\ncqYj/fAkWnwa3sk5mJudYDmF1s9A272xRESEcOmMxNVmIsxdUOmDR38Lw8cgqSq6+4ei9deRePIk\nypkwJf0uY6AujrSkkyjzVhG3bjmFMX0JRXyKsfJxxPEDtBTcjj37coTnQ9j5LPo0GZ1DQgsCViPm\n/beyMf0I14zUaE3sx/uecVz1+nLEgkTs/nokuxH1fIju+KE4osfBzgfBq5FU0cqFWdnkFkxClHyP\nTusm3NSAbrwFKpZgnrCeUOVlaHjRzOcRzibU7cuQplQjvroPuoNgCMITM6BwLIyeBTnjYOkKSja8\nS8EDb8KhmbCnB/qaevd73zgcmoKwcCDi3veIeOAWIgpfgYQ5qNWltJ39gerxVroNMeQ4HyHu62Uo\nrvkEfqxDcxuwfPQN4plJVL64glO/G0Rs/sc4ihPJuOQKKH8EvvoQT99kjHm3oev2Q/0KxNYyjNcn\nYkwdwITISr49dJahP8p0B6vRVl1kUJ8LMEJCRJhR8tKhQSZUVsHFfcsJPDaYIa+1QsjOqYiFJKR8\nAPJsgvWfEirfRW6+AXFsIzfa48FcxDjHWZKJYp1SxB+jbsEU42OYZSwLRlgQF85gKLwGy6JPsL6R\nR9Mlo4k6vglD+zZ0LfNg2/NQehrOliImXYa+7jheMQvDiFfQPbqVmFe+Rqt0IZSzUCkh1DCkZkNj\nNYamg7zgX8IXKcM5VhXLhOffwK76wGmEmABC2Q3dE3sT1sO/50sGvHLMP4wAAwT4eYzY/yXC/5G2\nFRB7ORw8DGvb4YOvQAjC2o/ITU6CfS5gEm9CaCLR/Upwbu0hJbeFnkEWwiMMdDoteIYNpL7HheoL\nUGToxhSoRu+/CkPLD7A3ATVuLXLoEI78xRCbiprYQDCrE0vRWrq+f5dwRhd9NlXSM+ASgo565Be2\nQ50CCx+Crz6DI/thQBeG2Eq0sxFo+01QG8YwRoMYByhVyDYTCEGEkMCQDFU/Ym1pxRnsAl8XbHkN\nztZCWiwibRbh7skE738OQ3YLN7z8MSlSPXG5DzLWPIGI1r2UrDEz5poPESYNrVujM2YY0T/eD3UX\n4BdF6FxhWoIy2bteQ3dqFDHXXIEW7wWXHjKWIOrKkQ8Fob8KdT0I3zIk62m0GjPCtBemLoZwJzQ0\nw9mjMOpyuHAY2upJKz0MXw2EIzL8GASdAvNPEN18Bp3uUxgKfP4q3PsEPHMfPLwUcWADsTsrGRsV\nhTz6KYJfLcf1lQ8x3oP+7tnoDR5EzauwpIjMHwUrageQGKeSeW41F2p3ka21I5vS6RqTQWKpAls+\npuuW17Hf9yBCvgDj57IlezT2uk3E3vI0OZeHYLwBpVKhe2oBsdXFyNVt4AyhpumIPtNJ0BZAm+xG\nfPgCthHJ4Avi0iXi7Yqm70QP4tIn4HgxHPgQ3DbU7H7EhIpp7VPEQtMHRPm9HE+eR0vZegJ94lBn\nTiFmRBMW3/3of29AV63SOiGaiJNL0BfegfHWL6G+CnQN0HoEafUK2jan45j6KaH70tHdpQePA5Kb\nYeTtcMVbkPcJdC5GilrAosfWcaSgmX2XX8GMVavpih3CTlMmV1WshpLPYNC9MOopMPxjR8z9HPiX\nCP8bahC8W6FuIzSmwasHwGAgrO1CqX0FY1U/diZOYvS5PRi7LuWWWAX3wERk2omu8KAaUnHPuBW5\nazWD285T7UymLC6DeMNlxBka0EcnIKQa3Aikq1cg1pyBkRZEeAz2Vw8gpJm4Y6Pp1tmwbe9NVagb\nbcXzcBFRO+rhVy+ALMPXn6G9sBZKu+CV3yBpT8MJcCfHQ1QRSAoU/woY0NsvIdAioxCZWb0BK59e\nCQkBaIyEoisBF3JyDKLvQAJnN7N473qMo26A2rNMStxEaHwp2vYYznxhpKh/GZyOIelZFWobIR24\neBDVMoL01h5K0/Io6NiJNaiH+PuhMQwXq+HE20iXmaFMJZSRhmHEAbR3Z0C+DmFcD4eeACNw9SIo\naYH4WBgzB4SgTF9DQdVeREUH+lgV9d4cpPIyOrpSsHU4kY3tULgcceYdaPbCrPUEH9QTfEslnHIA\nDo5HNyYfU2oM4QU9KNoKhHwjeul9ROU1WCYk8fy2pfwh/2E2TdaTX3yQ+j52krQytG4Vya9BVA41\nOeM5/+vHGbBnDW7fj2ywX8bLgV2oNwc5vyJE9v0OjNl2ujuiiM16CarPgj1EVWoZ6d/3oNP0CFMp\namQjw4t0qBYV9+Y3iB81AKl6B3T8GsKjYeJAtH170cqrsckKzza8SLBMQgqpDNUfgUyB2mRgq5ZJ\nRUSACYXRfN9/BFMbz5F+QgdDEwideIuO0Hbsk9cg738D9DlodY3kD+vBYHiDsG85gfvbMB5NR5xt\nhul1oJShxb+P+kcLmns5OtnI8L3lsLkdutxYq06RkaJHu3ILIjoHTFE/mav+d/FzEeF/7Y74NyQD\npNwLQx8G5xCQ6uHoUsQnl2P8bA/Ub6PwTD3VydfC5O3URTyMGtONNs6JppMQwVqyt7vJ3NiJvipE\n9rZqChpqcDWv5mTDORov2KmcMIrmCenYnvs9hDwQ24RiP00oMgIaPcSc6sB2+a1U/qovp+6YTaR7\nFC5LIzi74OCtUL8ZbeZMtMQ2xCw9InQMAoOg4HIu2i6Bg5uh/1JoOw/etv/dtVOZE2H6eui6CPEm\nmP04LLwBKj+FuqNI2SOxrPsR86IEEux+HFk3we4QoRInGKxkPKdgVDrpqTBAgUzTcDPhWDvqLQOg\n0oY2ehQJBXbSlWq0TIGqk1EPfYDqPYZ24Gs0FegzDmGMQG+tQNsQj0jwoLQmoe7sT9i6kGB8Er6c\nUQQun0OwbQXebVNo+SqLqI4DnB8SQfNyM5UfzaEhM4cwFpQYA16/RqjCgBIELScL5dEitAdDiCo7\n0idjsK5JIrJRxXD+IvI5D0Z5LWZDKYaTCjw5g57icqo9J6iNl7nJu4lx3ef4w7hFWMobCYRt+KVI\n/ME2tGtfoigczRy9B3ukm9NaJq+8+wy43WBWSb9BUP5tG+47Z6FT6vFOiCHUtAN/6XFCfSZh0BuR\ntIVg/SWiWqP5PivFL+lIuLyZDrkabUAILoTg/V0or59B+7EHTOnII6YgDR6MaWoc3VOjCPv1SFVm\njLoUZk68iyvcjdgbsrjFe5hUTxvUlCC6OzDG9sW+oQTpq1/Aqe9h3Qc0diagG5QN+95Bd6gLw2YP\namQX2GUIR6JuHcSW0lhCeVNwR9hhyAiwpMDRdRD2YygqoMOTgvLu7RD6iXz0v5l/7RP+ORKOhNbP\noawaTvohbT7ByYMxds9GiplEdFIhG7V19C3dTlpiMU+vOcKLA99Dsz2FcIDQfQVVVRjt/SHsQ3c6\nm74RO/AnGagpykNf0UxkrcqBefFk9bxBfHEm+nHXoN3aifr25xhyRpFWrtDUlUJnXiNNeblIpgzC\nwoyufEdvHoOec0hXZcH5WOg5j5Z3DtH/OowXOsFsg6wl4PPB7mXgc0Plu2TUbkO13I5U+CSYI+HH\npRBvgahkGPUNfPMQKGFkIcDUAievRr5sGeGP5uMdFoulfRRZV75L+yca5rCOlBc60BYXIr8vQbkH\nOWERsr8Hr9xGsygkYc4KtBNbYNszUF2LNioDsUaCgstQpMOEYwswZVbT0/ccPl000SsP0HlrOkoq\nSJqGqcqO6bM6yq+OYdft44hQvCR21BHvCpBY6cU3YzGGhGosvjR0oRLo2YkiX0pg+y6ENQr9FDeG\nfiVI0nw82zdjDNUhRgpE1UuQeDtopYihViI3yYhfPkNZWjnm0lNcGnGQwevKeXboY9y2bTn5D5xE\n0xsJ2+eixjqotes5k5LPnENnkAMCLVJF06kYnEYi5w+i7aZvqb9nPPYDH4CzB+PuarLmPwTxByHw\nMRgz0WZEUvJbwbBZOrRiA6quD97u8xhdNmSzG0VfhzbQhnz/x9DcAyW7wP8ZMV09tE+LINRuJKnD\nBhVboDMAgSTEmdXokvqjxaai2IejG+pHNkyEwyvBaiR89xr0dw1AqvHDqUfBlonUJEEoBsY0gH8l\n0jfDcC57lKNTFfpOXgRXNYE0G87uhM56GHQ134SeYci0XxPx1ATkxe9B/tDep7N/UP61T/jniGwH\nnQ8efh9GLYOcBRiTPkQ68TEEmtC5api45xWCBhsi+2GqmuMJlW1EDL4TenTQWgXjAPsZcDegIwpT\njMCyZwzZW86RojYgCt1kqOcQ8V7wlKAZXeiNS5Dvu4g85xuEzYm16hSxxumU5h1HBNJwXf9bmPoV\njFiKWFgLUz+FnA6IO46wuRAnP2GY50OY9QtQvCCckO6BXXPBdZGwyYESNsLRlyBmIBhGgH8IdLnh\n+1ng3wA9lZBnBZ8HdJFQ9jz6TgshytDc76GMDuFYNpKwTu2tnDX/I+jshiF22DgU2n2YlAK8cg3V\nrk8Q036BcMQjIkHSmRCNa2HbWuRjF+GrI2ixvyBmwm5SIu7B0t5N8rKTpH2tkrp4E86SeGx3T2RU\n3lRSvxvAbC2R6av3kF5ThjIpB0/6CmKkH6hJWMvFKZW0Th2Bd5QZw5P3YUxOR64ZjPy8Qvip5Zii\nrkK35DzCOwOS74P6NyC0EyXmEOF7riTi4FEGv1+MkwLsBh/Z/cw83nmELxfPZfnC6zllycXvs1Cp\nWtkfPZzmqDSsU+9CnfgYgTY73r4j0SfMID2qGV9PGsabv0HankX1hIVgicO0Zx88sBUOpKKc7MQj\nXIx7qAP7KC/CHCAmRqG9BCp3+yEZdOMtGPskIb9wPXz9PGQNg/xJVE0YjXXc7TTdnIXHYsC7ZyWa\nbES79mt4rAlK7SiTnsKVMoZTP6wmuO5FaC7D296A5+l+JPYLQ6QF0gZC2ABD/NB2AOJleNYAv3mC\nQfpRtNFM4JoINFcZ3HR7r8jaVEgZyPA8OOh5Fd8LU1DWP4N211S4WPzT+uzfwM9ln/C/RPjfUELw\nwz0Q0wIZg8CSBD21SJuehs7zsOMy2D4X4ZhOFSE2vreX+A130V5hRURchdAUvBf6waEcKJfB7Yf6\nnVAfj7AK6gdFYytxkRhoJMLmpS3bga89H+ErQxhTwfinbFQjb6ZxUCI5H+9haM9L+GwxuBregoQh\naDEONM+9EH4cGAeRD6FszQSlkNT841B6Ixy+A8I9cN4GmTdBRwtBXQr+iBHQaILPHoYTa+HIKjjh\nhwOAnA+hNnAmgTsZTLlQtx5pkg39aSshswW9WIMuYhdMmomWmI7hszsgWYXLxkDu49DSjKlsLwne\nFrzHvsXz6WWEho4Fkw6SRvSWoI+0I0wCnaoSjO7p7W+THpGSBSf9aG8+hbZgFtzxACL7l5D7IkLR\nk1zSg7lREOOqJbtiIM71GXRpUfhMDn5v+w0dEW9zyjiRcvkHaqPbEZuP4ctzII/KwjBiPrIc3zsf\nrk8C2+XQ0gB6DanrDbjCCjPvgOWvgz0fUfQ4DksiT/z4WzbNvYKnV7xL430jaH64ENcwBwtLDsPq\n7fi/+5Jguxnb5x6EdSBKHzPJ17bhsxg41/8I3dIJan93B62RF2jeXEi7dICOnSe4MKA/Z4sGU3so\nGfVwAOHfSFwSmArChDJNaGM8aDddoOuVawg9+D6Un4Qz29k1ooiOrkMMaBrL4YeyaQ224tu7mq6X\nimheOoYj5+ppfGA+YtlSnE02tEH5aEkCsxMiCyLQ5c6Eca/CFe+C5zwMd0FaMuxPg6k3g3cVnLiW\ny4rXoKb7cR0JQFQsjJ4H7aUQlczIfnCwRGA1v4xnsUAJn4VHrwGv+ydx2b+Vn4sI/zzG4z8F3e3w\n2t2w6zsYPAHyImD8/WCRQP+nbTaRqTD5VfBtB0UF+2gSdFlUNnxOUeNJJLWH2KvXwtf34nNptK9r\nxHLXJDAlQbcXpCrCwSb0pdVkN+oRMWaUqlR80zxEBp3U5UCfujqEM9S7oIaCJlnoTO2Le+AdRKx8\nHttlz9Joe5xQaV90qTPAfDdCzoHwB/DFK0iJ8YjxY6gNekiMsCAnjUPo56LpXoHqI4iuGGI2fI8w\nl0BiHriMMOBqUI/BmFehcBJ8OB/u2gI9ByHLDOc/h4S7wOzFfvwI/lFGqPoG0b0SU3gfHmMNnv1B\nPvzjJ7RYHDz75YMYLWOgfQcWt45smnHldlI3qT+5m+Lg7DaYeQMs3w33zkRa2US45mPUb5qQigMw\n7xmE9TZU42S01e8juZsRVz707/+V4kYMn4bh+HcEW1/CtGATasMi/GlhIvQVOAPfk2I0EA4UczSr\ngOjrmrFctg5d0NpbmXrQZ72pTNu3QkcxYZ2dzlwnuqpOonv2QeAULCyC3W3QvA+5Zxma3cYT0lrO\nebM5lpnHoKijZOYdJGCR6Bk8GB8pGPxZqNsb0R/+I+aSFoxDnBTdAt4DdTjKA0iVr6P/pRXdpgZa\nTkhEtIeI+30/oif9AMfjoC+ILjCckuhuUXEUhjEYNbR6icjgH6h3nEGZpMdR1p++XTa6ZCPJOz+k\n6JwFT66KwatgiJKR7z1I/E2N8P7vaLl7JNayEozHfkCLFNDjg/mD0HaXwrYdCGcq9NXBJ2HI89Oz\npYnIpdEQuwByRmHYtZD4YBSr5w5lftthJC0A4xeAv5rcKAOltQMACaPzFnreKyeibin6hkroU/RT\nePHfRCD480jg888rwvYYeOZz+PELOPgmNMjw6TIYlgfDOyD5T6u/WgBmFUPgLK4zN+C3naY9Khtx\nyEtioQl9xkjUnnqavpDRp1mhcicEOyGkEUJPyyAz9kt1WE5ZUfsGCWe1YlIfxvjxG6Qc7IIJEkQZ\nwFwEcZ8jDP0Z2PcPHNU+oO/8XJzfXEH0gP70pF5JzHdNUHSSwMAkQpEqNlcn0u2vwuCZnNupxzzy\nD0S3HUfpXEf949kkh4ZjGDWZ6lFjSXhsObpUO9LdT0FtNew6BDuXEz58P7J5OKpnJ9SsRqo4ivAZ\nIDEfTnyLFLJiro0hVGTHkPg6YucKrDtuJhxuZ+7Hn6A2HqPa6cQgrUW9qS/e5F/S55P3sIlUzlNG\nSl4M1pYLEAAcl4KjHck+kK55BowvNBPddQzKfTAoA7kzAkUMQNmzD13bErj6sV7x1GqgqgUp9VLU\non0oxk7S/1hNZDiSCYuP4lGPoOubgJ7b0FduQJyV0U9PBIOMv/A2DGduQcIMmhWt8gm82fHo2jtR\nLBKBhvMYpXZonwOTZkCXB/aqaEV+rJKe2e43MbZlIhe3o/XkEBAn6Bh8ghCjyTL9HnGZAObA+HVY\nR9bQ3LOCunPrSX1zHWqjgvRBD6Tm48hvQqfaSE7ch6jrRp3Zg5wM1IAYoJKr07H3PcHEegPingnI\nvqOkNe1EqcjCeyKINc9B9/hGzqQUkffdOWqGOEBzkrwrBmGI6s3FMf8GOssfoU+JAulhRKkMxhi0\n790wtAei2glvbUfulBGaFT7xU33fTIrSxkPwALhroP0YpsBgMo4EKOFlClt0vQErcYlIOVegAWgC\no7gaA9MIpRwD/vEEGEAJ/zzk7597OkJToXUnzH0GnlkPz30J2VfD6nfgmctgzTB4fxFcngo3zMNa\nn4ehxoAsOZAtXhKettBQPRv3lD7oLBrOaS6UWUthXAqYBVXlBtQDPVgcdqTZNyG0bsKxGkrjBqTx\neligQa4FNunpkm5HNRQAYCKSMYH52Ho2cO6aqzE09kM6d5SQ2crhzlf4XFvC4cjNVI0poGKwk07q\naWvOxSRepsZZhifkIqMDDBkzIcKJXjLQ/OoStKMXUFauguGz4cFStFv/gCaq0Qomwr4H0S6uQGu+\ngH9YmHDrUZT+E9EmzIRj09A3VEDl1/DN/dADOk3Duq2a9EGx9HVYybh+FckBH1qDjf3DZ7M5cyht\ne+yUX6LgHlyItmUk/OIW6GyBQRPQXqjGk1sD0jgwRkN7NKhVyOIkQkiESxvgnlwSWoqh32BYsgox\n/22MfgchFsKchwn5PAz8qATHxXhc7g582gHiLnhpiYmBAx/i5RAt+reQkm5GDW4kcOQBXDkJWF1d\nqIqGqjOgdDfB8SRIKofRi2DMNXgWzcPQmkHC7osEjIKOTDNabTQMvRche0AbSiq3IRC991GWDEfG\ngTCSvn8l+TorIqMvUh8NLcuOWHQl+hnxkFtFsK4OykE+CBwFNgErJPQdCSRVy7SVKXCoEDJLIe4Q\n7ppuus83kf3D97R1jWNl5qWcuu9rimy/5vxIB22mFDqf/zWoKtqmZ3B6a5D9pyBhNEyZAk9VIx4+\nQTjubo43zKFM1x+mPQ1JY6C/j7SovdA0D/wHQX8JOKZB9UGGdJ0m2FJPbU4+yvW7YdJvQWvlnvF3\n0162CDybENgwMOEncNz/HpSw/Fe3vyf/vCLs6YSVd8CAK6HwT1mfZBn6j4ZFU2HWBYirhr5G+P0O\nyCtAOm3E/nmQtEVfIt+Uj72xk6iSZjzk4xsbR+2CaMoGrqc1J0DAKWja5+esbxCSToL6N9BMDkxn\nC9GcZUgOFZIEJLlAUmhyrYXAXghXQ2Av4uJiLPG7yfR5qRtxGG3Ic+ivXkZR3D1cdSidwefSST4Z\nQIQVKjlI1JQ11HZ/TjSDifzBjEh9Fuqug2AtxpRBBBKdyLfPAk1DefQ+tIpDsOoOvLPChIbqkK+6\niNxzLeKHJAxfxSIdqUdVPWhR++HM5wh5KhxYBJ0tiMd/h7juQRx9L6AUn0Cb/TacvxFj5EiKijcy\necxSZuXdwcyvPsfoM7BjRD5t3jLILYCOZrSC0UgnNCJLUyF0hp6CkVz8xUNw5ZOQrSBTgag/j5ow\nlv7nv+kN5JAiwZaKHIhHQ8VfNJXOfjkkVFVjq04idoMOT7ie6MZ6WgYNRg220OS6FYsnFjp3IPQd\ntOXU0p2VjxSQMEU9jOjxIXwRcOcJGL4Sqq5GrZuAllPKzlevo3xoFj5riAumfoT81SiiA4ETS7OL\nCPJ775nunWjW/qgpHYCGnDSL8icvUNZcj9YEIt+GunIrypYIgi0ShgkK2iyBMtwMjQIckZCowtEO\ncgr8nDmuoH79e/hmIXzSD7sURPV60BtDDDvyA46GTspbN6KPjCalxkf1AA/nXn2fYPERetJ0eFOv\nhD3REDkYQs1w5gY4cR2+E6+QUraTpOhBiAE3gtmKFq2nLbkvNOXDsUjYdBd4NbT8IeiHVVEUPMV5\nDrDHVgldb6K1LiHV9iOvb7wSrNN/Ks/9b+NfIvwTYvM1wTO5kDYY+s/6zwZR02DIRRjV0lvSu2gE\nTEuA36zC++gbNPs7sXW4CR3TYdrdjG6rg7ThBrJLq0g9ug/qjHSnRBGVb0E/Yxia1ApqGK1RRa5p\nRTVORdI/BJudKE2Z+MYsJHH/BSTfSXAvg857IHIT1I7EHPMcydZHEV13Uhn8I/qCuRweAYene+hK\nEjh1MtHhNeSfLicv8Ar2jgWo7mLUmHxIehcq7sCoaAS1bgDkGxYiJkxBe/FGKN6NwfILdIyDyv2I\nxESEwYrYe4rQ48/TM6MST7wHkhW0JU/A76Igfhy0dELJuxDVSjgcQ8cNg9Dc1bD3Isx4pTeUtaYC\nXcBA5v4W+nR1cf6ZXHySDwyXI5Iz0VkCRB7cD4Y8IkzDUEtfRKl+D6yLoV1CVqpQ5FTa7alojesJ\nFd9G2L8D5HT05rvoCj/NwbGX4hk2BYIxmPxhUktLUCbJhHLbCE9agNmfg1ZVhlb7GqpdoItS8XfX\ngBrCunYVflIwfO9GLVkFhmRUx2A0s5fwtxpjF71EwYpSTD49/c6VIzJzCPb8QENOKgkVvedA06Dh\nTVRHG0S1QaASIjPIunYyxR910+DPQ33eS9g9grqGZLxjvkU5pqfrohXRqkCsAS4NwxKgvw8pXTD8\nWgjlAJU7QO0DnvHE9ZlI7e8kEjZd5N77X8fk8rPbsw9H40V0lQeRzYLgO8/SUWjGkXMvRGdDWx6k\nfA4DVlKqm8cZ6xg8VzyCve5HKB0BQ06jTkgm/pNS6PJDzBnIAjz7EUXT0WJuQqm1khm8iMP3Bpqh\nEJHwLeXiMKea5/1PuuvfjXBI/qvb35N/ShHuX/0t5E6GvD9TMFWIf3+tt4K7oTeYQzZQvWwV6S+/\nhbhEj3SHQLu0Df/WZZhig4gOA9aSJJxxHxDX1Ac8LiYEvsDj0ePTRVFfPZ7fDrgTj99LKGoUK0bd\nydPpd3FODRBIHgmHmyHqRYhdDerL4BoGIhaddTrRSXuJ6fyR2varSSYXfyycXhBFu/sL0vd2c6Lx\nNkTcKMTWe9HVe/C2342mi4dKgVGyE+Nb1dufsIeWMU7Cdg/hb9oRNXaU4FHY8gJc9hza5aPApsNQ\nmoFd24XBMxNtkA5cHsJjsuCSe2HPYdjuRV2rQU07Fqef8O4m1I5y8OwCxQ9pLZCciaaLwxtTR3qg\nlOrmB6DwFsLbPySq9XhvWZ3BBYiGR3AaxtOxvRa63fDOfugzHZ2jAYO9DcVYh+7wRuQTW1BEGEle\nQISvkqqUDPTBBuiogUMRSMpwkl7rQArUU6MuxuK8jVB6AWqHwJdqxGctILLcjKaG0YydpNxxBmWc\ngrb9l7BvGNK5g8jbhuI4W4F+/HAMmSEiPAEsRw+j1yDcfgZhjUWOvBSq34WuTagWFaHvgzifhtZz\nCE2KxeE6xahJY6hq0RGeNoe2i2XYb7qZ6GkzCPcfg1Eo0KFAcBhUOuFEFAgL9I3E0gSlP0CoSQV9\nFTiKMd32PIZYJ+0VRuR8hSuOleDu1uO1F5Ae6SFtsRobcwAAIABJREFUqA9vyVFoasB85ChMnEZt\nySfw0n3s9bfzdv4wBs64gSTLt4RsNjpHfo8WHo8aYUNqBUa+AYnZkPkYNCVDxBlkbSu6QdM59+YQ\njPGf0mYpAiExYbCdm/7xB8EAqIrur27/FYQQzwkhTgkhTgohtgkhUv+S/c9jZvp/kqCX88kzyLjl\nib/OPqYISj+C1BkEG0+SUricCAR2I3S5JeqqnVicYfBMhFgB2nn4w3UE5R70VhMVBddiCGwhaHDS\nJ7Wbg+mFyN4ypPrVDPP7uW7jcdbffgkDqzJh9S0gFJj0LGQ8AMfngNreu+XMkENk4npcPY+TWH8H\nsjMGhzaVs8FOKJpMRve3sHkfuM8hxnownaxF9fRH1pwE9t1FQnA9ius0cs13xHd24jV2cfGN68ld\nU4Io3wNTXkSTmwhfthHmt8OJJeg2X46u/QIIJ1pEJ1J/P0y/ErItqOdsuF5aR/SSpYRbPWiHn8RX\n7Me4/RaY9wy6y54H4ySMnZH0/WgvrYujyetIhQ3XI39RjFIwFPKrIecYxC4hetnvuDjLhK1gJGaT\nBTVCInBjPM5396JdNOBT56HPGY+yawX6bbcS7jeK/KTVuOwNmNoboKkNvtIjEg34xCBsa1Zj/fgK\njP0ctC2OJbash/SjekJDIlDDRkLHGwhMTEHp14PSZSAyLGFyzoMhu2BwNrhP9Qbs5CZi9FaDfBhr\nRwqBNDeKXId86jBaUgta4bVI3Iry+VOIyDshKgopPZGNi1ZSu/YLAivfZXR+LOZJk+D0t/g7a4lK\n8oEAzXMQUamHMbdB1SaY0YA4oCPpkjCuIwYccxfC6Q/RPplGwvkezpisxGZMRJzZwbSO45Q6YjHZ\nZaKHGKla20Lf19tg0F2oGQuonZjC+jwv58Kneb7zKbrNNqokA+mp0QjpOKHsebhORUBUKRbHBIjo\nB58OA58TfjTDwPdg6AS0z35JLn3/Py5x9bj/frf8Sfj7TTP8TtO0JwGEEHcBTwO3/Dnjf76RsMFC\nR0TWX29vT4Wq7yB1Gp0/PI2hz2AwxSIqQI1fjG+zwDbSjXpgG/Qb2ptUPDEPV4pGREEGfWq3YG91\nER0OstM8jOeeXULKEZhXspkRjo/xREiYsSJlTIFfHYeLO2HVHNh4J2hOqJ8Nmvd/f53IyJmEnQ+R\ndaEHxXia8ZZ76VIucGpqEuWXPIyWdQOkj0cesxpN141yyUv4hs5FzRd0DtDjzRqFSO2Pub+P6BHn\nUW9OQ+1TSsj5W5TzdyJ97UFXqUOf0orY+SG8fQg+rUY4VaTDDbDuDZC9hA/8gCoKoGwzuhNPoXeE\nsZhl3HOyqZg3gHJnKZ6CKKhdgc3sJ/nbAHz/DjT30BE/GaWghi3zc9lk8nKy4mHUKQHikvpzzPoD\nnVyPd8ZWdOe+QxsEYXcC4VQnxA7GFx+H5K7CvmkrU7cdoviKXFxJYXCkQ3kIrc3DlJtexLy/A5Ge\ngecWM4pDIeCPxNO/jQ5HM00pmXTMHEXz/ZFokRJKWhilUyFQMB/6/x6iJkP6070RhY4CSH8SomYj\nW5qIqalDWvMuWqAMvC0Iz4OE5k9HuNxolZlczNtAFQ1MzpnNnUPfIueqMZxt6kBbOJTg+48Q7JtI\nlzcF0vQoqg4NHxx7HaIvwEEdWMLEZubiDZkJx9yONrcMtc2BYcdeUrL6UBkThrz70LVnk+ZpJqa0\nk7BThzfZTMgMHHUTqvqCnoZ2fpwylecqFuOLv4nI6MXkt4+i86oACrUYUmcg159BssfAnq/h1Zuh\nuRm0U9D/JiiaRseFC8Tk5f0nl/iPD4r/0Ph1f337L6Bpmus/HNqAtj9nC/+MI+H/Ks4RvZvbj40g\nbkQr4jRgtsCUT4m2T6Zh3jHMNYfQxrRByATVLTAzGdfH4IxSkZRmbHEmXCEZ74yR5BxdQ/6etVRO\nHgElJTRMO0E81/ReyxINEx+Hiu291W+7TqDZQ6C5IHwGJCcRniQiNn5PVfRViKwt6GvnMiA8l9IL\ndnaNfgVz/H4SXUMRdTuQEwpwWV4jSfuUWu0TOrR24mKOomXWYnErJHprCRafJZhhx/ZWLcIYhk4V\nzivQ1w6LcnsrNE8LQmd/aPLAtvfQjl9EOa1iDZTCmRKIUuHarYgLzUQ9fyNRkbMJzPkVbY7bMA6o\noS47TMwfijEMHkfdTEHpZUE69CNojnNQWFFKtnwaEQoiLEaSDfVovslYqzMRujCNpyX0jz+Bm3Mo\nvI4uQcJW20a4GyL9Exi7dAOaN0zY34FOgBot48vQ0TVahztrBAHzdoLdkYTTY0lqPo2lE6Tg5ZD2\nSwI1zyM1leKPjETprqZSuYo068tEBpsgcQFaQQAMx1FnPIDa9BBhux/D4Qqwq2hZboJOGen0Zejk\nMkJ32gmFLmJ5ewJOQzdqVS1qlpmYGw6iM9Zx/scIDNmxJMWMRb/5ACJVjzzYBlv8aH3MiPNhNDkS\nLWckIrs/KXcdR1t2B0pHDPJja/D1gfbP3AQWbKP99V1YQiMwpN2I1/0+Z+tyMI9po7XYRWogxPLU\n26iLHc37+9/DbPSgyQfQ2oz0xBwjUp5OAg8SJkzZ4EEUHtwIv10Bix6D7btgbn/I7FXZg6+8gj0j\n46fyvL8/4b/fqYUQS4HrAS8w8i/Z/kuE/290FkOcEyKqEbV2sFrBG4DuaKRImdgRBhSjhFyuhxVv\nwcSJkJGGu6mR9P4XISIDvdaDLk5PvOFpLj4cTZ+mR8lZ/gjdfWUSjtTjT15JbcunJG1tQL7/PTj+\nMUx4DAY+DXWLIfAwePdDcwZahQf2OjCNXsMLQ9/jTUs2VLyGubYAiOFIbCfD1E7iL7yEFF2CzvsL\nQlxBaqCGlFATqiEHzT8H5Y9vIBdMQ9HV47UXI02cjbH2BySHnpBjGqHaAmTPBfQzDyDKjcgLNsOp\naZCvIE5rBEJOInZehDdGg6UfpEyBFKD/OPhwOsaL15L8/GYCC2TK+mSw46OxWNpDpLbVMcAr43x6\nNb5xc5EfeYd6/zK8gU1EtB8lsXosim8lIvG3sPojYtrPYuUaqDgFG94mcOQsPUNMRB7xEGzcjWGw\nD1dDNJbObghLyJ0KnvR4zDlhrK5qTDuGIkduh6MyWoKAUADKVoNlLcYogSIrmHQuRIqZvhviCA4+\njWoeilTyKprLh8oWJGkNMlcgbXmP8BXTkd2HEGfiMb1Wglp/Gr/Vxvmv0rH+ykrX/HHYv1yLK2Iu\nCZNkRMk5ktJ3Y17cQN2qTsrPv0nKOIkoowVhyEYb14biVpGH9YXys9BajfLlBiSPDWLtyMp5lOYP\naHceB6GQPkyl8yYvxrEXaVOcJLUkYO2v0VabgbyvFNutOvoY2/jlH5YjfCU0P94HzVVCUOsgMWYF\nJrUIUb0Lzn+HrBzBUFIGSQOh6iDMWQqX3g2BUgDazp3D0bfvn/eNf3T+BhEWQmwBEv5/3npM07R1\nmqY9DjwuhHgE+D1w8587179E+C/R8SW03gtp7SgtkcjZt0Pbt2C/GQ6/DhVnscYWUuuYTsbqNTC6\nAnLfBfcbRBda0Ab+Gp/3Y8KaD1d2AcayGvI/jURufxWi8zBvrqApM5b4rHXQ5ylqr7+AY8NtWK7/\nBt3+dyCvAlE/BW1VFfSPgUAzjF0KOZ/jDJWxxP8kP5imka130RQHWdI1nLfXMrH8OMG0Fky2EG7v\nKkrbh6Gkz6OuvpasWj1D64tR8qKoGZTEscJ+xEoK3qwGosL3E9lQTcra94nsWU/tjCWY/MOIMW1B\nvng16CIg4ddoEX6Cr/weWQuBOxWyddBZ3VuVODYV1y1/oPT4I1QvnYkUDVll5YxxdWN2XIoY+CEc\n2gFLV2LOnktQd5qQrRHF8yssFz4GaQ1hg0Tg+CMYm+20OHPJ7GmF9EKq+nWxc8FsZq+vRH+pC/3c\nF9Da3ySg99JZ58V2qppIl5m4Cj2B9iCm/J0QOxGsfdBe3gHfTEZEn4GJT0P1cojQoxlLEZpKU+ZA\nUlbvRW+OQlxoh+itiNAgwthQ2jowH3wSMcKJXL0JaY0FsbsENU7Hd55xvNr2S7b1vQmvPovchj2o\nBaOJHH5zb5BDewVMuoISczEjPCcIFgVoXh/C4wthK+yHXW1AnDPQ+MAEEt+yEmxrQHX3EAgqBJM6\nkKYYIPAJSrmNnC9VdCJMh09HdbmetLh65Pw55BsO896j19BQupam09VcmvQJodpU1GAP1tcF7U8o\npHTcirH5bQh6IGMi5M7Duf8gIgvovgiXfgZDZvfe96Y88LlIGDiQYXfd9VN539+fv0GENU37M6v6\n/4kVwIa/ZPA3ibAQwgF8RW9m2SrgGk3Tuv4Pm1TgUyAO0ID3NE1782+57v8I/hKovbU3I5k5jFze\nDdbPYMR5KLsPEnaB/AtsX37Flim52CdeTbRjNXz7EL4Zefjm+qjI3UnSBrCphUT2TMJY/APuOD32\nvNFw7b2c/n4KmW3RVKWn4PS9TfqQnfjaX8d7ejG+Gb8hzr8BMfR3iD47UWtrkUbcCUYHjVVRNPpP\nMKhGJsc5B6/+SQb1+5ou91rGhQPobacwKEWUhIfxWtQcIhQ3c2Qfk3tWERETS8/EUajeowTNx5gl\n3kFhIB3KPsIbNpF53k/H9R+wLuYbnN0uBuw+RCjnHvQb18GCXLBdQvhEM1J8PHz4Gxg+BI68AENu\n6BXhxuNUB48RLVsYeGg7ui06mJMMi46CpO/9bcdeAdrlcGEh3rMlHBg1gOtqt0F0GKIWgOpHn/Ut\nWpkfvzEb1jxDyF3DrmvtJNQ2EFVRDJOegOK7EVlvEb/9OrTdPfRMSuL0NRNJ199A/LffQc0XED4B\nLh20XgVZaSDZ0dofR6uzIg2Zj+RvJGwfiLGmAS3CA84v0SxxECVAvYBoEagdjxA0qBi+CiCVAcNU\ntKv0SOtCWKdczctjS+FzKzFbG+DseaScTjj8HPiMqJmD6fKcIM7iQHfrSnRPLiE9sRolM5nKzw5Q\n6RpO/k1lmJ86gL8wgLEtgBqvQ7lRw5z7OcopPbXW58h67zRawIRqgbAw0rGtmtz5V0HOKEwxV7GY\nHFbNPkLsnA20z7oS1/2lOKJT6I6pIOX1ZtSGt1FuX4Y8bQqc/hq+upFkTytSshPohLp3IdoILmDv\nJ5BSyPhnn+2tqOXt7J0q+3+Nv1NKTiFEjqZpZX86vBI48Zfs/9aFuUeALZqm9QW2/en4/yQE3Kdp\nWgG9cyN3CiHy/8br/v2p3QLVg6FL7o1sGq5AWTv8mNGbsDvmNZBKkaQmjIYQH12XhiculvKZTbSY\n9pCUNIY++h+xWPOQGjtA20fkJBNHxuoIXfEr2PMtKafbcPzqe3K9GagtTjp2TsfS/iERnYkYu/dS\nSz09+ia8GZcQ3KPgu/9R1NZW2prWk5b3KGLIUoRuJFbfOGr2zGOIeQ39LjQjTBohdwQFunyWd/bl\n5fVnGScuJSm6P7asVdi1hZgbJVpDfmpYRFf9G5gqP0MkpFN67y04EiczXH8b7SYXhy4fjyxbQYqA\nZW1QPJ3grlcxFP3pL/S4YdBNvQmQgJ4z19Nvxz6yD+1GJ/kgHARTJBx4FX5zGwR9vZ9rrwFlNkJp\n4qot32NAgYg86PcpcsFyaqOmEcwJEYi2oRma2TMzjXHabDKCbaDpoKsGErLh0Dto3UH+F3vnHR3F\nke7tp3pylkY5ZyEEiJxzTgZMtnE2OAeM0zqHdVyccQTnBAaMbYJxAEwOIgsBAmWUwyjPjCZ2f3+I\nb+93791v93q93t276+ecOqenT3V3nZ6q91S/9dbvlfqDKfsa+pf6qTaeo0yzB/JUMMwLwga5p/A3\nGHFt2YniAIkO2Pcu0q7haH70Eu5pRU6Lh91hdJjn4NybQPBoANUH4FpvQLwVwEMihEchku5EtPlh\npkS/4EriXTUYRi+Be9bBIDXUOgAJinKp6Wan0esg6WQ+lNig2gayQNNWSqavgh43T6fq4FD8ySeo\n+rIQheauJYBuEtqvN1Gf8AappttQj52CpoeTgEND2jRw3dQXd+osGDQD0gaix0xsphkpXCD5ziCH\nO3EZikhcU4faaECb6kd1+FF4ZRxsfQp8MlLMfND1ApMWdp/sypix7XpoKYWMfpi/uQI+XwQ68z9g\nAP4dCP6M8vN4TgiRL4Q4CYwB7vlzlX+pO2Im/HHf4sfALv6LIVYUpQ6ou3jsFEIUALFAwS989q+H\nswZ+fBJskTB5PzROhYYAxLdAoQkIAcc3XTOECA2ZUh3tfiudWhPJVU2o9kmQpoIhuZAyFwo+g5JK\ntJnh+FqbqH79KZL3vkb07a93JUm89H7C9oQTPHAHcpwRKWceIUUvYHKM4fxl26gsPUzvJh9Rt7xE\nw0NLUV9aTZg6qmtTxIVt4HWTc+InQpNMYCnDHZxEkbGN/h4P1O9GkzEEWurBZkeYohHBQ3jKTGSf\nyyG0sIW2/h4aRkRgSislYVcpRBQTa4xhgiuJql5WDnQXDHnOjeHkfhC9kSJ3oG3NgKu3wJtz4M51\nXe6ImkMYnDrcmmbMig/GrEExLANdPaLgHQiPg/Wzuj4DG6uhswpb/4Eovp0QaIX4q0BREBUnCMsz\nEdBAMBQOzL+MOCmROJKoZjiEfg4jZfAPRpl+NWJVDxTJjiZkBE7tanqfHE9uehSe6GSyavfCmCy4\ndSuIL+jItWKw68HrhuZuKImxiKmTofptVJrpKBUvojn2BVQFUZVGo9aFYhTnqJ8ege5gAEWoMRYf\nh5nD6YwsxZG8mGzNTeDIh4hsaI2C1FA4sRWyF9Ac0kZLIJzM3KOwczkkptGpr8JUqoUBATRfLCZ+\n6K04K1IJm1VD27nxWOPK0KhyCHYbQdTqpWi19SCdIDDRjmafwKnzYb0iEqNzOt6ifpxNvRlncx6D\n83NpDJFoT+xANuiJ3dSIYrAjSxo02XdB6XEwtULOfIgbBgE/7F4NxTsgMhrym2D2Ssh/EfY/DEEj\nXPUFqDT/6BH56/ArLcwpijLv59T/pUY4SlGU+ovH9UDUn6sshEgG+gK5v/C5vx6KAgWfw4R3IH4E\n6ASoP4Xml2Hg+9D2EvS9EtobYN9bUOYktb4CyezmXGgGw4rLYGQW/v1HEIE9qGbuIdh9O6qqbxGN\nKhJr+tJhPoJ88wtIw2f/8bGi5kfcQwdgyt0D7vsgNgSNy0BycD7GtFROjP6W4d++ydHl8+m3+ws6\nZ4xHt2Q0qopVYInA1BCAkFWgeglr6k20H59Dx8GNGEP60DzyXiz1H6GvWAtIeLtXYt7ViMH5Lcod\nm1AnHSYhz0eL4T3KEyCy+izmwyV0zLqK5MAtZNxyN56Am+LfzSJi4B14Bk/GOqoe9QcjES3FsO32\nLsU5VxHqC6Eo9fuR5z1JfWci4Z521MIJ0kCYd19XzHOgHSpzodYJ5jKERwt1R6DqNfCvI5g0FPP4\nt6k2ltNa/xjhWOnGIJwUorENAPfHyJ4KvCH90cq/RxKZCGc5nNuA6KajOfN3OKVrif62BI8pEU3H\nXqQeKjQxY4i8djf+Q+1o/VpEmhvXHRfQFV9A7TxHSz8bypSZhJ4rhWYHyopDiIrPMJ/Ow/jDFmSr\nl9LYHuQ+uJmFnq20V39CdusuCJ8Bx38HafMgWAcDH4DDv4P89zAkjiP7fD3Cr0DNMfjDdwRfmwTd\nxoKqEC6fgC5vL75kL8qQBKxpJ/GfljC1PIBw/ICm3osSVURgejzUdCDJHZwYMginIZLc9KV4Og/R\n/fDd5LQIfGV+EswBOh2t1IaMg2nLkCuOEAzxoSmvgAvrYe4bMP62rk5X+hPEtcLl93cJwM+8B6qP\ngpwBgwdC0adw8F4Y/2HXZOFfDc8/ugFd/MU3K4TYdnFq/V/LzP+3nqIoCl0+3//ffczAl8BSRVH+\neQVIhYCB90G3BWCKBXUMhE6GgetBFw/jHkbe+we83YfjXngrimRELUWQUFBFtGzkUNpU+OEs6i3H\nUB04i/vWHBrMLoLVepTQPsREgX3AefwZRSDVdxl9gJId6Ey9aJ+lxROiQVH3BGsU5mevJlW+DMOM\npZwwVTNk+XPEdEZh0B9C5D1HoNmEkpCO7dJqiF8B6XeDZMJKX4xVZRSEVrI7bD/6HishOxMlzYun\n/CQ6I8hJdgKXT0V11ZPodjiIMr6HLS4WubaYqmExmHesQz11DJw7isbUi/g9Kuo+ehq/MwixdgLn\nTCi374Wpq2DU81CSj8ivg9HdaemThEln5MJHLgiR8TlsEHUp2OeAbT4M/xjMOpRuz8DQfCiI6kq1\nM38N7cNG02g+Tovko7atJ72bNwLQzmnkoBvZHELAeYYG9SO01/yEsr8Gut0LoT3QfOWkRRMCzvOE\nzkiFIj+qjzoQl6oR+t1ItXGotFkEaoCys+jvzUV1wzba43tg8xgJG/EakiqWpoxwTu66GXafQORc\nh2rVBdT37yG9rZ7xH47g9WYtNt1IiFgJ5XNBbYCD94CcAgXnYdab0NFJ+ncbUSfagQTIage9ilZt\nLO0zrqMlPAdn42Faxw2ker6VziYJxVRDp83Fhe1XUd/wBt4EQTArHeFoQu3wkf90FsWTUzEpZfTY\nvoLx2/YTVuwnuLsB3YlGtGYweo2cy0wErY7AoJ7QYzgUfwWTnoG2izrO+V9A/hrwJYLKCD4HvDsN\n/J2w8H3odSOkL+hSVst97D/66b8SgZ9RfkWE8gterhDiHDBGUZQ6IUQMsFNRlP8W3S2E0ABbgO8U\nRXn1/3MvZc6cOX/83b17d7Kzs//qtv059u/fz/Dhw/+6i00uLDnf40qR0TSa6aXdh+WsH1uli4ao\nLDbHT+SyfW8RGmjFk2KlqGIi5yyTmML9qAv8+LyCnXcMx3CiJ4ltJYRIFbTIydiri2lSp6GPqyIu\n7jQFz42gdUI/hp9+h0M9bqJ2gJNjQ6J5ct4riHooGzmCkOgqCt1jGRX2IuosaHYks83zBDIabHWl\nTPI9ycm+PThjvJq4I21k9f+WCpFJmn03vi/CiQoU4ZEtSGY/cqGGFmsyqvp2QjxV4AK1S0aEyTRN\nTeeQ/Ra8qhDSv1mLPS8X+b5Qwo+3UFHcg5K5cxh96iW0BieSSqa0+2jaRvtIXFRB3IUz+COCHE8x\nUj77LYRazZhdz2PKceAN0XN+yEAiP2nDllRJvnEeyaoDnDTNQD/1W+or+nHixXZuXOCgzR1PZ04N\n2oCTPvvyMKU4cMQmUvHpCLqf+Z6qHn0Iaa1B527nyA1J9OpxCsMrEu2OdJLdBxEq8Nu11Fdn0dkR\nRksbJDoLiVBXo2SraRkWQ6l9PMkcxPxjA1sGTKGhRxgJZ9NxiwgAQlznUPoVYC03Ele9j29HTWfQ\n6Qp6iH3oE9toKM/EZqhBkoM408MxlLdiOtlCx8gwDN+3I1LBX6rnVHg8teMGkOI9Snyeg7a4cFQJ\nrXh/jCAmtpTzCcMwlFdjNrcgVfqJ7u/A67TToLVRnpREQIZeh0pQqTT4zlqQPW3E55XhWGTDutVN\n+wwz268aw4QDB5E1EoZ8L9XxPdGclTkTNo9Ez2G0wQ5qNH3odWIdEeklqDR+XPXhbOr92n/r8pLi\nQ0GN8hdmw79oXP0Fzp49S0HBf3gwv/rqKxRF+au3jQghFDb+DNs3S/yi5/3ZtvxCI7wcaFIU5Q8X\n4+FCFEV54L/UEXT5i5sURVn2Z+6l/JK2/BxWr17NokWL/vobBLzU7pyPetyzuOUNONo24pE1SGo7\npvoIzoUGmfPDWtTaEEhIhopRBEQj0uEv8EWrOZ2ViTzjUgzODnxmMxHtOhLK6xEFa8CcQ+eAKoJf\nX49wSZhuuhYOfsBx+Xv2TZrOrJM7iFvpRqUrRlz/NvS+hMAUFe40Czp/B5pL+yL1uhair0FeMZQj\n2VEMGBmNtLc/lHxMfbqbsA4bGqUQ9ibib6+BlmhUKfVdKZfChtI6JQTTrTtR97oE6dpLuvSR636A\n5Gl4Xl6LqrIIaUwaneoqvIk52N4+gOrmbERZK/SNhz6TaA6LIjD/ZSJmG+DbDpx5R2kMhBMzcy4G\n7fsowQDMSyYo6VBOtKDxRcNteVD8BheMbRzWnGWMfhHbNrex6PKF0DCPirBhGEs7CGvbhqw+hNBc\ngiQegAOrILgRBg5GLijjcJadfvlleOdEYN49HHa/B9osxCUqeKQKbp+Esm8nnu1+/I97sQ6bhlyw\nDY6rkLJvAuU7nhr2AE0aePXoelrHLKNeHKauNZ/kMyYakwJYT+1j7uQPubOzhBvK14JyAhpqURqN\n4JLgqi+hZhNsWwF1akjRQp0bJAj0k1BbzBCvhbNNkBvAq9Og7zkY8vdBr/nw2RZ8gyEQ1olebUCS\nwkFdBedmUty9lrQDh1GsA+k4WEEw1YBjNhja7IScjUYndXBkskRW8XlsdQFYsg+Rd5zOTY+gnnMj\nFGxE3xoNERqo2gnCDpNvBut4iPvrtYF/8bj6GQjxy4yiEEJhw8+wN3N/PSP8Sx09zwMThRCFwLiL\nvxFCxAohvr1YZzhwJTBWCHHiYvnfJQES9EPRT1CyG8oPokgqYqKuIuLIPpKqp9Dvq2qGnTrNwIaZ\nxKpiiAnIHBo/mf0jRuAw58CFtahf/BxRL6PNE0Ray+n/wcv0rOqD3melxVFERYcbuUwPgx5FCv+M\n9ls6UDo66Pz8E3CdoighjPlfPMfuRDsNj11AKfagvPM6HFmF6jIdmlofDVPfxvv9AIIOLdyciLS/\nlkHrDiH5+yCm38vZO9cSnJiOekEu2OagzHLifHQwmgnhSINvRUTejfg2n5AZG5HDgyhL+oIpGpAg\n/Wb46gF0xt2oB7Sh2robc0szO8Yswn9vKnJrHkpKCEr+ZihcRsiRV1D6N8PoRMSra7HMTSD6hrn4\nv/4Mn9uCmL0IdvpRGYpQ9Wunea4HL8WQdhtmy3CmNN2AN20haZ9+iuLxgf1V7E1bsJesAE0+aCyI\npnaoLwXH92C5FPaYqXW4iG2tQhvnxHC+gmCuWRhOAAAgAElEQVT4Z5AZ2hWj81oD3BoJ3+QjXKFo\nr3TjfNtLZ14VwXSJjlsUapMOUTZhDL34ikHBXM4PUHHa8xTlge/o+W0ucSX1NNs6kTY2co0cysfm\nTNp7jkHpVQrNaoSqBRGaglANRcQ9hVD3RgS8COvdCK8O0W0m7ppwREEi2N4isDcdx6Be6APhKDXV\nKCKsa0GsuhPOSKiT9QhPAOw5UKQB6Tjhh8uhSY3/3AlaHzLhWKxgrwoQeTgcQ7GTtsFX0O07hbDM\n1+kcPRTVffeiWv8JneOjCLaV0j59KhcWRxAMnocbj8HVu+HTPaAL+wcPtL8z/p9RfkV+0cKcoijN\nwIQ/cb4GmH7xeB//yzUqFJUan+Yw6jXPgM9DcMJlKGEpSLvfQLLkIE1/CdHiQV1aSnjn94yMuBRG\nPQk1R5D79IOoAyjJi6GyCLGrE9vTQTw3hmKUk+kx4Q4wW2FoKgy5As7t5mXrYOZYc7GP1eJ7rQZv\ndhiaIUOICW1G8qRh+eY76NcJO7ajPLodZWEKJ+wZyOmZJIydAk/MhfihKD1PgMUPN7xHcHKAvGsj\nmC1FIFCDFIuvORpLfBXMmQfHToF9OkpJO43XRyLfFIL5/ArMZ8KhtRTaosEVg+jdCt6OrviWIpmU\ncyW0q0KxZ60gcOxe1BFWVLreCJFL6MgU/IWn0HofhvJ2jM1bUN4fTkDeQ8Vnx0lod4JzIMHZY9Hs\nehvH7FeIaXyQsPgxkAWNvxuMZVUR3kMHkcdacZmaUScp6OhEVIaBIR+l4CGEUQ17ciGjGkNHAoa0\nZBTVSFTuAlyxNRhdLYijJ1GGCyj1IkIy4fZHUG25Ft2UAPXzc7E+H4J+zgCsIXnYNUuocxuRyz+g\no2ccEa4MhukXIfZcCqF7SMjpTUmrmZvOfMjMHnHUqUPR7bgFXVMqxOdD9xmw/244Ugah+TD4UTjy\nDnSfBe5CStrG0jcjCrHuVpoHhGHuOQNOHEQ5vguh7QF7P0bpMxS571HUtekodMCe76BKRjZ4OBQz\nh17tOzHeJxPt60vzPhn3a/vxVPyIxqanY3ISBlrgxoWYkqyIEQNg1O2YeibjEkeJZDEB2mi87AN8\nvE6k8Ub0llC4ZQSsK/kXEof4C/z80LNfhd92zP0lOhsQdfvRNrQRGDcHr74UbcEppLMHEQr4jWfx\nGjajRBtA2gR6EMk1aFmPIXY+kqKA2YqYthXl894og9207hKEn/UQ3DoLdZ8BoK+C3vHQWcun5PCH\nxAnclzSQJuPVWEzNHNFYSD+qRTEbGa7NYP/osUypc4HBjLJyA/KXVXz2xO08+fj1ICohPQ1seaAJ\ngteOPAPk/GdYsDCIPN2GEnMFoqkAQoqQnP2h42lIuwyW3ghJFsyWdjTrJDqGOlEqBQIX1HTA8EXg\nDelKhdM7HBr60r/sDYpDjET2cuJ6fzydh7/B8m407jUhmG/3UhXdh/inLQh9H5jdCP4WNLvtJIhi\ndnQMoNeU5wjfehmGBoVW308EFixDg4KPYrTLhuO40kfb4Zs5/UkW3euCaFN8kNMbny4CHXuhogUi\nQyEziJzhQ+e5ANYAoiYCbN0xNCbh8WzHUBEOtg5Ia0VZMg+x5nqC196L5FmB9l0vYoMWQ+9T+KM8\nSMWPESenUthdkLJuF+EpzyAGOkBXAnG9Sdp1gtMLsuhY/x6pzUFEpRlpSxuMNkGjGiL2QO0B6OmH\n1iTobwbzEKg6iRJfT2phKYH3opEGj8M35SiGuveRCxJQahWkUY0wZw3BxB2IF44iXX0OxaOFDoFc\nE4J0wEGK8Qe8ukiiPMdxHWjBs82MvjlIeKQa+vSnbcJ1OA1boUKNtPhp0LdCxU8YGEljr9MAqLER\nzTL8NNIgVqLcaSXyUTPac0eh+8B/7Jj7e/ErL7j9T/nNCP8l1GbwtSMKVqNxVKKJ7gOR3br8aYqM\nuuIQ+o154GyGDidwFcoNj6BE2LquFwKKnwBPEqKzG7hK0YdE0zEuAffQE1juqkJ/rAbqilHKyzi8\nbCBTawpQhyej39OCe7iD8n4TyBj7NL73I0g07ufHfs+SlzOe3sOjEbWnCUr9uOuVVYT5KlBUCp5x\nk9EXnYCEs4hZjbRvmIXNWIJrVTqGLzMQq1sJ9GvE2T8WS3spWrcd2bEBabSA1nZ0VVZUcUOw1jsI\nLroD9ctL4IWTYI2AZ7uB0Qbp6TD3IaTNM3AmxdPYvJzI/n0I9JxH65LtaCfHoNQXEnffl9Q/MJZo\n240oZbfiXnsJem07qqk1jLItZM/nbzJGaUDpAFPGpTTq30R4XejrrNilHCxvvYHVpWaoqKZNeJC1\nfuqrw9HbClAlR6PuVoZib0HIkQRtPQiOKELzkxpSPZBwL6o3UtCXe5D9nUiD7gfXa9C2FtwOJEcl\n2iQf1hUxdBysxR/eD3X1BaoH5HDSkE74YQPWYxZUOUuh2ArxRoTSF+2gRagsu7kQOYbYdesgeTBE\nl4HsgPQAtCaA2QyBbjDuBRSjhiAKwYqzaFPasPUPItwB/A0SdrUOpciDUnIKVaaAa39A2XsnSkgb\nlGkQYQK0AdpWWLFmtuOTFbaNm8Kw2YtJiXgF6+AVtN/7JFHOZ5GWXY4y4zJOhJwhYvpQusVPhTP7\nYNFjkLUQ8dFsRHYqssqLhA4ADRHE8QheUyUNy3VIbZ9h8DRj1Q9Hxb/oJo3/y/+WELV/ezRG0GZA\nzBIY/znM3AqT1nUdT1gD15aAvR8EvMjhE1CmLEY8cjtSXpcICo5SOJkPrSvANhLRLQtzfz3tb5Xg\nbMqk8L4wAs9eTuCaBEhPoxteVleOhXe7Yc7sRnuvLLQeN+Efz8T7dSTB4JW4cHCyczW0fgt3LYVb\n78cRH4HwKrgq7ag/+wZ5qgO6rwFJ4uC8Wzl/z1Z07m6ojlfC4iDBIieWh2rwrWmlSmMnf9QlVNz1\nNPLkS1DFA4kXUEsJqL/6HGbf22WAATReiE8ANJTqTkHsGFLy+nLCdytKXC6qI58jAvWYpihIaybi\nWvky7uxSZNcLuJ91oYnqQHXpzWDQo06bxeB2H5KsEBiXie78PmLOTCH2if3YH/4I49cfIywQGJKO\n0X6WaMqQamUslko0Kc20eJ0EFDXkCpSjifh1flo/1qGhP3x7FgpOw5dVSHEOvDeC3FCLwIJoq4CR\nEmL7R6gZgTT2AA2XZ1IYksCBof1prvTQp7IXqTXlKK3HkZKd4LXBpVtQnB7UF7zE6pNoSdPAgjdh\nSzl4KqBzMOi04N0MI3NxD7mHhm0P4bzmafyHFbT6Hojv+6LkA6ckVJY2AjUOAi/pUQ1UIcwKSuAM\ngaSjqLacRW2X4eNwaA1iS26hjXDUS8KoWRJNRu0RlL3b8MjV6MlCMpth1BTE5HmoUWPDDtlD4MJJ\nqC8HSQXjHsBYUIP74i5aORjE09hI65kztOwsJrChL23bLVwILuXY0T4cvO1q3DU1f/8x9/finyRE\n7beZ8P+ElGFd5U/RUgySGq7LQ/5hP6KuCdWra+GJW2HNneCpgQGXQ0Y45ERAbg0GkYpct53I9lIi\nAx6UeD9KSAtCZeHW0hUoJzQwqhnRsobzdZcQ/l0emg/y0OguQ7FP5gZ3Kl9bTkLz4xA+nbPh0ygY\n052hI0fhf+VD9LUOpISXEPrJAAwSgwgPsaNUnkKc2YLyvQo5x42YuxjTzWvQH6nB+3kSLttmatJd\nxHnDkHLehM+XwejrYchFPeqAE5L9XRoR/nh2mMsIHXEvtmvnopezOHB7Cj19ZqzDC5H0Z+EPX2Gx\nxqLPXY77oZNoE7Vok1Qw+S7kb1bC9T0x40EMScQQcQmkTIKNj0GSGk63orRc4Hj6IhJn60gt6QXV\n36MY+hN8tojgkt5ExB1AUcNxpR+ZogHJYKRzewJiyI9Q6IAPnofrn4eQjRg+Og2TjRBsgpi7odfd\n0PoAWvcVEBGNknUJF7zHMbTJZFli0P30KrI7gEsVA1EFiAgVvuumoZq1CNWZTQzqezOHYxxwpAWK\nz8CEaJiWhtIk4y8eTFHgQV44OZ6e8Uu4Z8ByRMl2wAehycjnNYhxSciZ5bRt7M8fHrycpw88iLAa\noeJdVJ4+uMqqMPaxI6rDkUubEWMD2FKzUJ3P5KGvX8f0XBPBZ3S4A7sxaS72zWmzQacjnjSyGQin\nV8PQ4fDpo7BsFYVr12B0Haey5C7c69KQJBlLqJp4dR4mvQ59ZA9M/a+i7adwgiHVhL88DKMu9tcf\nX/8ofnNH/ItgS4IZnwAg9XQS/HEN0rhauH8wvHYKoZ8BC54G2Q3nFkPqaKTt3xB15ZuYUqJoqJmE\nKQBK81CEbxvIrSh33IRsKSTgb6U5STBsdTGidj9kzELE98Py0UAuvewbaO8LqfMJKV3ABNEE437k\nTPQ+hn5dA7qLecAUhfCOBih5CKHJgFk3IE+/FJofQ29vhk0TUZqs2OvbsORdjuvO6+kc3AvjdxMR\nQ3pCpBsUJ5w+BAm9wGyDfisI7L2bxpC+/OB/j9Ev3UC3FV8jFY/ANnE1yq5u0KjA/X1QFtrwvqVB\ne+1taJMGwVfPEPzgBYKyCs2q5YiHl0LEEKirgkEJ8NAh5KPrYOcNtG90YtMeRbXFhdOmQQmkENRG\noxqSg3bwRLz5EyA9SHqiGZ+/kOYvzTji/CTdU4D+xFL4uB6uvh/8NyMKE2DLR3ClCzKugj1PQPlK\nxMm18MgxpNBEctqjSMh9BKJCYegylA8fR5VyI8LRgPLK7Xi37EDvaUd1+z1IWZMYUF0A51+FnhIM\nzUYpfhVfTSbffdTJG7c/wgM3u5kQMw72rodTeVCohe5elAQZRT6FqJEIqWmidW44yl4v9BqKOFCN\nWJaP/5uFSLPvgBemIE5J0G8OUuhplB6XYSp6D34PKq0X/b7lGMyj4XwV1DTC5AkMUKlQiZ2Q9z5Y\nkyFcDV8uJSOuGnyDCb3wPcZxyQiNEcJToTYIsT1g1C1gshPB+H/UaPr78psR/hdBrfvjocjshvJK\nBaimgGoR3BONUqODB2cj7nm9S/A9ahMo5wntHg3aZGqTb8QeuAT14XvgTVCeeAVvQisB52p87khM\nJg/xV8so+Vch2rIhEAFaC9Y9T0CfS+FAPgfaejIgUA7nB5Bs0sED9yGEgDWvQmIlNL2Df+gXaCJm\ngP4UYs86dNduA1kCtQ0NEOR1/LvzMQ40ohiLUDp1KJkjkOTnofYTiFpF5+YrUUc6KAxdSZK/iuFV\nozAHehLjb6Xl2U34iubidyxF1dodceIEyjAPrqdd6Cb1RpPjhh4L4Px3SJteRrrGiah7GdJtBK9/\nhabPLiPC04Yo3YlS8CmBHgvQRDqpCUkn5al0dGveQzN/G6i7dAxcbOBCIJbEDe3oFznQtEeyfUQm\npQfT2GDs5NmYDPTjusGG92DGaDBEo7QUIdqNoI8CdRv+yfNQ6k+h2TSW1IAT2Z4F3V4H98vQ+jaB\nCwHU+nVQmITS1oqkU0NlAWz/EnZsQG0ww77VcKUMLXvoyDVxf/yjWOfXsCnkBwyxjwMCDPOhbwVo\nqyAsjY5qGdPgRsQHHsxXn2HFS1cj2Vxg0UNOdzjwFvbXLuYEjLoaYTmO0i8KzMvAtxBaEgnaqlHH\n9+dIVDJjjqXB1s8hYxD0fBSV7ANfB3yyCuIDkDkU1H5E1HQCWZdQKRdhL3cR2e3TLl0IRfn3iYj4\nf/mVQ8/+p/xmhP+GCI0GAgGEZiSKNa9rBpl2Fn5Xg3J6FJAEJXsRoT7obARbMjYyaS3Yh329Hvez\nCfjSHkJSa5BaJTzbJXJG+3FOsmBtHo6q+HiXYE5cd/DuhSnvIj/Xk4ER0QQzk+ANGet9LqT6R6FE\ngfXL8d+bTem4mcTqo9EAnXYfhuLzIIX+pxWBMG7BcyYNdawWeocSHPI1wdUL0Ax14xwUgUdzF4bU\neqTGGLJ5HjGqgr7le9ltL6P/tk+wuN5EFdtBIKIM+QO5K7xyjwbtNC2avq3g/AhuXQ9jr0fcdA/E\n1iBve58Ds8dQqHmIcZILdj6MZ1AD0uU3oivoja78NBb5DKYdT6FWxf7RAAOoiMVcbECqbEH2+RC5\nlczNqKIhai6x7QdAFMIQGZ7/AMLvRil3Ii8RqKoF7B8AvT5GEz4EWThw8TLu4DEs53qhOfsJtLWA\nrg4pOoCUlgyHHkUaeiPigkBzzXSYf19XI9wdcOp9HO1ZnGoawMupC3n4zOsMrdsJBRooL4RON5zZ\nBilj4Kn3Ye8krLTAYzIiEaQjQcRUJ3KehFLSibphf1eKIb8Oek6BQQNAHYpS8hVS2g0ovlTkIfuR\nJC005yPF9oX1v+/6L69/B3ThXW0zAP3GQqEdSq0wzAMZU1HrEzG3dEe5sAWMRyF56L+nAYZ/mhC1\n3xbm/tYYDCguF0KyI1SJCO0URORaGHoSimtBBiVcjRJsR6GTULkaJf1hWl4uJBDVhF5MwFgvsK5p\nJLbJRUpnb0SIDSk8AUaug8GZUFYJdMDygSht7SRWlOJTjKAoFPon4rb/CK8+g7x8M+eGpeMxqbG4\nY/DTQYn71S4BnfaW/2hzUx2iMBedy4/PqiDbbKhzeqOdOApR50SEPEiEcQMWnwXdOTViyysQkYR1\n4JW4kzKg12zUEZCbNJKGyAjkoILnnIJGr6Bp1kJYD7DEw9BhUFMIBVsJ9vo9x3oPpr33GAZK80kq\n68DPLvxxF9B8dQTqDiOX72Bo87uoK1oQQx/tUoK7iJ6h2KotKNPb0BeWIrIHImpCCc/YBv5W8AqQ\nusEVL8HdXoQbghY9CgGweEDcBQ4TkmMpZsd0gqppeHrU45qQhdzvcQLKYjq3qyDCCPoOFNf7iMYz\nMO2m/3hvnQ0cqxxMH8tuNiX1Z820Oxj66FtgkUGo4NQuOLkVnAL6jITNb0OTE1UwgKKVkWwJcNCI\n2GxBMij4LsmDcRLkpKPsfhp51ZVw8kc4vglpXyHKrlshPx/fMRBxQXDY6bZlG8RnweM7IK3vf+6L\nM1+DJ1dC797wwmdw9gIA0aGvoc26Hsr2/Xrj4H8Dnp9RfkV+mwn/jRHZPVEKziAGDPrP5/VheCe+\nQ9Ppd4hpOIO/4ko64jLR5NdgybOhvvpLVDsfR+7+HVJuKIx7HMyNiPjLMNAbEfwa/GrInASZCnzz\nNXSUUpGRji4khPrObLB+jS6sJ96Hb8B0zSqc6Xq0hKPy5FEuzSfANMJirgHvFbB+OgxMwH8oD6m1\nAtX4iYi+tWj8An9NHSpFQViSACuWYDcovw4szdDTDhufQ+k2AWEIMOKHF5FHPos06k761/5Eid1C\nRM5NWHVAdn9ETj/oeR1U3AUzR4GvhLqjlRwvXEwO/ekvliIF3QR6aJBq4zFqn0KMk5FPrUF4tiGa\noSZDQ0ThPWhzY2DJuxCZCEBwvhPDi90Ryhm4+0s6/AVoT92ONvQdONcEUVthdQAitdAiIZxaFEs7\nosIOUWPgmASl60CzF4tJQt8uIykyoupt5AgzgRIFJT0Cht2A8lUrwvddV3qki9Tuz+Xua17iktid\n3K6cwXxSj+J4GYEGhsyHw/ldsdpDx0LJ++AVKGGRBI5UoRo5AHHjH7qyLK98HuUcnGoawgBrOYqv\nJ876EiyJRUh3rAe1D3l7CkKXhn9jAZpwAe0+fHECf4EMy4+C3vTfO6Pl4qJadjTMrIMfVsIPX6Ke\nsoCQ3k9BWOt/v+bfiX8Sn/BvM+G/MVLP3sj5eSjB//KtIwTanIk0LupN/cLBqCpaCXn8DNb3Vej7\nvo66WQdNhxEVAuJ6wJB7wV8LkX3RylOhUwN5r4JxJJSchROloERgCLYTYUsl2nkWMfsldD8dxDdu\nLN4JI6niQ9J5nNQddrRNfprJxyeto2NiPPLuSppe1tL0aAVS1KPQZy1i9yBIWILPlIRy/i7ovRQS\nx6A4nkZxbkM2NhMQScheI/5XR+DZNY8Lo/rTbm0DcyqabjeTVRGDpo8fRa9DPPJpVz4+w0DQpuAL\nv4v9cRMom7mYicu+If7Lr5H2zMPnmgByDaq6WlSuRpTy3QTEWaqzR3F09kDU7RFosleDLR0emgSt\njbiVWlz6EKSmDAKXXIvSUYRyYDWN/pugOQdCL8CPTdBfBVcrkGRArbEQSBDgUEHBJjDPhIHPwYjH\nYcxSlJt2It1ejHiwEGnCdLQToT15G0HXKmTDeqTZM8Fs6Po/WzZhqbiJbesn8ZarhLQP3ye4tRqM\n4ZA9DOYshpjzML0HTBwD9x2Hpwqhezca1NlIt6+ArNEw5TnkHnHU7NPgNt7Pofv11LxyBMttH6KW\nTLBxPqK0DmmDGn7Yi/uQQL7nU2SHDpWqCtHDDt9fA7kvdEXq/CnMaRDVDx5eDRPnwuKJiKfvBMuf\nVZ791+efZNvyb0b4b4xyvgD/Y7+D+rNQsR3Kt4LjDACirJCsFbXUXKhGKstCNcAHz++AtjPwZj+U\ncCui1/sIQw50loA1p+s6325wJ8G5D2H10/DuTugRBtdfjV4yovHK6AJOOF2JthWaLwtSwtOk8SAq\n9EiacGKKx6OhO4niHaSJTxNsryOQ+xnaz+5FWXgTlFdAuoKUsBhzhhYqW1CaH0KOOg5r38bfrCFY\nbEL1ziaEoRJNdjy+6Fb6rvoQ3ft/QHlgCbz/BLz7GCLjOpQkFUgy+Lq+5SoskewIvkoGQxjaMQlN\ndDo8vxK/fAC5UoXU403QJ+BrVVOaepjTYyajKWln4PNHiUqZjPDshphasMkQ9NEiH8OlasHHFgL9\nBkB4H+RDn0PFUQKeQQQPhiD3gKCxBermwpgnECGhyMkSiuoseAPgaYITeVDXgbn0LBpVJGgNEJGB\nOmYRugUxeG424UweS7AhFam3DJVvwd5YqHgb8xYfmrAReDwBGp5MxXlGB4e+QBm+AHY+C/Y0mPIS\nOKpBrQdnM6LtNHndLofUri8luaWe6m1thM810/fR2wieryUstR71+itg4Ytw4hxsfAZihiDOlWIc\nGInL/TbSDj+d58ZwZtI0mLWuS/s6b1VXBpP/ii4Kejzb5fvtNwLe+xFsdtj7/d9lTPzT8utl1vhZ\n/OaO+FuiKEjDeyJlBhBN26CjCX5YDufDurSJo+PQhZ8lThlK2T2Xk3reCxvvgM4OmPQsomQnYs1y\nGHYL1H4DsRcTL3p/gtPVUKWG8COQnQCXRYG1kaA1HEo2o8SOgg1r8G79Pa3ydyTJMlq1vev6sEyc\ncZFYcCFQIW1146tUETEWOgbGUqt/HHVHAfZUD+rqpSihfmTt18iWCaiODUY0N6Aefhjp+SuQrW4U\nbU9UV2/CemcycoUFnBfwjqinJjEb3eZ2YodOQBR/gFz/I960WvbUziWss4ZJh3NRFf0esrUwWwO7\np6JWayhqjcQrXkA/TIdHrCLmeAMpm48gSRE0Z8ZjH/c01OeB7QcCvTrxrM3CsTCOuOI6NI5QpHwX\nJJyhos1A8MfdJB5Zi2+gFtGuIhCqJ3DHdVg0oxHBW9CUvUwg6QPUsXeiBLYh3jsK3mZEaBWMVAEQ\npIWgAYIhJgI7m5GfG4nidSFldgfvV2AbheI8jzLFQtn4KFKmPIF+skTtPQmoSvwYh0xGPvI4rts9\naMwfYtSEIc5vg50vwpDptJ5PAkB2u6lZfAsRTzyFrv1VpMhe9E07jpTVB3pPA91KmDkAvtqNb8hr\neNbmYkivx/yZAdfYcIi+hCBVXYLrcUO7yp9CCIie1HWs0cDA0V3l351/EnfEb0b4b4qCFOJGszAG\n8l+A+nTYpwNTAGbZoHk3ilqPalsRdXTQ9oWDpOuvQZvRD5XTj67+JCKiHd5cDDMGQ1sZzLkTSrZA\n9VS47RQ8sgje2IrSupvmylW4GlsIk4yk7dwDb/yeVnGMDjlIVEMs7rrrMAXmg3stbl8q0WeycZ9b\nj+vxuwl/6g+IH5/G9v472DKSkTkEsUGctRq8LROxlCSiGzEZaj8hMGkcjjMvEhJUo8paisZUAq8/\nA3UhSBlWECF4bniC02kvMCH9HKJtfld6p+LHcGrT6N00jI4mFy2Jkwj76CdEUQ+Y9yDKpg+omhTB\nmqlxjFI5iCqykbPiPFIriEw7nHYQKNSj3H4d/uFuPMPrODegN+nLG5BrU5D0GUjlh2HVc3DbNkKG\nuDGdUCFGh6EL+JA1flCPQPXDfThSrAQJEHbgNIFJvRDF9fiSqpAyDDTfnw41DaB/+OK/6KUj7Dv8\nI7VoF2ej6ziLtuIEwqiChA0oQkW76wNUjkfQyjvxvjoYbUElUc+5UD15H2LfXqTsh9GbAgiseMwv\nod76HLKIQ2O5DCngQ964kprHlxP21qfohw2DH75F2/N6+GoD2rg7IHwd2N+GilwIPYrU8SrGKR7k\nECvaK76m89QgdFn9kDn/D+7z/4v5zQj/CyIkSJiGuH4SeOvAGAfLBMhBaC0CfyvCXYmp6DDKk2uo\nXGyn/eFnsTxjQCQLot2dRFWH0rQoHY27Bss5H6qnhsE8K6RGwzP3woJhyEeuwBHipuOCE5U3CMdb\n6BidhL0ogl7VtRRn5KBeuhkp0IDr68EYD9iILPkYpd5O83MGwjf/iEjIgF3rofEk9CtA0gTBNQal\neTzVNy4n6YZhaH+4n4o7TPh0eqKeOkCwvje6Hk3w9Y/QKwF6pQEKNJVjfXIKE2do0KVqaAu9D6nz\nI8x1LURsPgFvrCRq43b8WWVUje9L/KFTiFgt3geWIG66nyVfthAx04ihuRviUB3c8yTY1yJnGvCG\nSLhyDuFzZfJF5DVM1c/AfnU9FzQvIKfGQ3dgQTGYtxMxbQW+CT1hSG/4MRvJHYbWGYS0K4nYsQxP\nz0uoXXApoQd3EEiXMIe/jwgsIpYVkH8FxHblG/BThcYXg015kpXPjmT89A0Ew3SUJ8loeB0VJnzB\ncgzhiegjrQjPfnypYeh2eRFPvgqL5iBuexV98wmCB/5A8zNl6JNlDEMaEUuWMmFsKDUrawl57XUM\nwy7udjNEgS0SOTMVyl6HwZ+Do4Lg2rM7OR8AACAASURBVHuovXY40bVHkUu0aCe8Cq8txOBy4I6Y\nSo+CBJT+rQhdSNd9Ak4o/xDCRkBITleUxm/8aX5lX68Q4h7gBSD8ouLkn+Q3I/wrINRqUMf/xwlJ\nBfb/m3BkCIbkeQzf+hmVDMSzbjjR1WOp2/x7lN3bqYuoo1qbQISzjKarQO2Nx6y0YD2/HI0tFH9S\nXxytTuxtiejqTqCud4ItmoMRNzP9xQcxvrScXq9fB2lDELduxWP4HXQWoi41QK2LsJW9EKHNUJsL\n2Z24/QEMbgVnlhF1/KWYCs/S84tp+PceonyGHlN1J7Ff26nKCZC8rglxahdkBYHTUBcJWX1Bl0RA\nbcAQWwrbZCwR7Yio2xG2l6DvYEjNQVzxHNpzC7AnLONc0sdk3DULvyGRqKlVqC1exOZIqNsHKRaU\nmi34IisIjEzBVlhFe0kPvsqaxJX+YYSYEwl2i0ac7kQ0uyE9G0w7wHQVpkG3YhICWo7htY/HZ9uL\npc4O5ftg0FPoZTfRppsJXvgG37jDVFU9SUiCB3NnGULVtenGW1dHzep1CPV6rPMkEkUy6oVh6D9R\n6FZ5gfaEW2jkHG5vEUn6UXRGL6DdtAH/8Y2EpzjQpUXDsTPw5efQPxPv+Q7ayz1YJ6ShHpiJ0mij\n+cvvKHl7LgPc3wCH0DAeraIgjn2Dv7eMVj0D6ad74btj1KYn4AqUE1TLaN0aRNPzMDoE6gXeNA3m\n4w20H5+GTUq52L8UqP4aIkZD2m0Qc8m/bxzwX8L7l6v8tQghEoCJwIW/VPc3I/yPoK0OFJmEgQ9z\nli14VLmkn2xGXPMOVNUScmATNZN8yJoODLZmxAYf9QNM+C810WY/QaruHZQ2B80tj5B41gFX3oc9\ntxjaW+GltxFj50CgGeH3EnJDG766atRhAaTuSxAng1A4HyVcBd3Tqd8cTlSZD71IoDnlWdSZvTFt\nO4kYbiW2cz6+1zYjd5YSVq1DPPMa9JoNL0wCWzVUJoKtJywYhdbze2hbDcefQVo2Eda9BU1NkFQE\nzyyD+BTk/9PeecdHVWwP/Dt3+2aTzaZXSAIJJSE06b0IgiAodhSxo1ieig1sP9RnefqUp6JPbKAg\nKvgAGwpIky41BEJNQkJ6b9t3fn9sfKJSojwI6P1+PvvJnbtn7j1nd/Zk7pmZMwHxGP51M8kBQXja\nWgkoPARlwBYt7K6G3m2gbToibTT6nFvRF+Txbbd+VNrSuT1/E7r4/tBQSH3dSgJiB2P+5H1Iux6K\nB0DIUIT2AAQmw/b/UJdaR9AGDTjzwdIBej5GLRuoLJ1GTOgVSE0hcRkFuGKuoXTJcjz7qih552q0\nVisx116L9QIPInsdl0RPZd1Ve9F2ySCoroKVvIsWPaOdI1EMuZhFT3CH41g2h40v9CPFdjdR5QcQ\nb7+I8/k8aqKSafndR2g2TMO3ay/Fm6PZ+spoBpVthZUd8dSlob3+INJ3BLFjBUq8xJvxKcpOBYoc\n5E0JJtldgTM8GvLq0BsHIkJ7oVtaQVCiICvGSfJ8oEs/6HOFf6g9/WUwRTdzIz8POLPhiH8CDwGL\nTyWoOuHmoKoA7vsaXB4SZ26iumwZFffOIdQyEJZPxjx9Ma23XI9s6ER9/lOUd4nAFy6Inn2U8HQ7\nNb1fosKai6djA+7lLjRzn6FzmQ8UHSS3hxwXZB+BvSNRtjUgeyq4SgMwOjMgaCCETYWge/EppZgH\nasjPMxJbUY1hSTC64o00jLcSIB5E9/Fc9DXF7B2ZTLwvH8+h+WgxQeoQyPwCSlbBgW+RPV7G2XIc\nhliJGNUfbLHw+lLIWo0s/ABPYXfcc2ejhLRE370/ii0KceNkKt7rg6VwL+4OCdT930NUle6npn0a\n0boUWtT2pqIqG2tJDUMaXkfndsK+nWDpRh1lBHokhgIFwtZB+rWgs0L2PNj6KdJsxqOxo6sogbGL\nkd8/QUnd87gDJHHb26F0GYSiJOM4cD8H3n2dwhwnaXcNof3fL0MfPwLqtuGVGxH2WITQ0Mb0JAfa\nv4Rt3yLaHo0iOvbvKDXfU1v0A9W1O4nL2oOuWEPHGzIpSn2CwLS/UZfVCVOijsgD2+HwHLwVpdRs\nacA5BGzJJiKDNMiVa6ncsIyGteXoOoMsN6HZFII3UY8uWME3tgOO+P5olWLMFU9Qd2gQ+q+3QZ+v\nIDwag3kginkbTH0bNm6CZy8B6YMnvmne9n2+cIbCEUKIMUC+lHKXaMJTiDpF7WwjJcS3gTALTB+H\ncd067PdOpyh0O159CdJt9z8+GmMQncZhyYhE5+tN9JcFeIf3x6KtI/rbJTiLfFT4WuHobEbWeJHx\nGpgQD1YzrPgEsvNxd7qI2olmanoGUu1NpPLF7XjaXg4hqxD2K9GkF6CsTiQqUuDqrsVY50OxJGGe\nodCQ8QAV126lqrvEcZEBs96HY/tivB9MAOtWOLQb2pmQNwZQn9gFb7gVYWgNnT+EdW8jvV5cK77G\nvWojdtHA3kWTKPrwMXLu60bt0LfIzb6QrCuHUxgUQ35sKFWrX8F6cBupeTri936JtG/BHBNLTHYl\n79pu5F+d3sbeejhoFlMbUkBg0UGUUVdDfih43LB9BmxbCo4o7G3TMBVXQH0gvl3P4PV8T/iiZ4n7\nZiFK1lJI6IEgFIokLacNps9n44kqLccXtRjqtiMLXwN0/kUXQARtkAyl1qYhOWMPxkUbObrsTRr+\ns4GgKR8gD63Avr8CNpYQ8u99lDz3MAbvUayvz0dcMQheyMSrGNBHRLF7TEfSlxxE6P6Okt6bkK6A\nx8zRNwTOUgXNBdfhCQqHumxK23QjnDSszML+zKsE3DYeYTfA/pYQ5UZ4skndVYPZFww9x8Il90FK\nD/j0aXDam7WZnxecxhS1U+xC/yjw5LHiJ1ND7QmfTaSEuk+g7AHILIKrrkF0v45Ecy+qyKFGPIhR\nLMLLDAICWiLsBfgixhK2eQ261G6Ie3Nh7g+IvAeora1lQNZiNJpI6KPgteugoRTWLkWOvgXP1+/h\nW7MKXXQDQQFaTHofvsFR+B4ZgSPMTn5aD6rstxA5vhjPYRe6nAqqfXq8HfvgGRuNu+JjakM1WKfW\nYK0vQYh6AuzgNGpwz1iHvv94lKHr8VV2RLv4azQ3vgCaMNDZwLMB8e3TaFqaccfGUSbmEbSqFF9a\nJ/TRU9GEP0liyT0kLa7AtcuN7tttiCg3DNsH8gowxUFdJcbB/2Z97nqu3TGHpdUwO6o9w8OX0xD4\nGubUfHA8z/4rhpISPRE2vwFY4MfV1F8cSrAiqNS4qehnIT77JbQrn4BWQ8C8HVzlCGM4Jr3AdOVH\nMDsEIjvi1hqp3/cuDcYNuI6EYNyiJbT+H7i2zid1cwxVPRVKhhVi+M8dWFO6Yho+HSW6PeLz8Zjz\nK7A7sqg95MJzr43awEPYZoyA3KPIBxQ8h6zUDIGgCB22qCr47gHQtEBkVxAUKamtguINGuLSr8e7\n9k1k74c5EplMW4bg3bcfabej6z4AchbD5jwYdguYB6P5z3XwQxiEj4cbn4c+lzd3Kz9/OI1whJTy\nwuOdF0KkAYnAzsZecBywVQjRXUpZcrw6qhM+mwgBgVdDwGgIWwT6dHBsgvIHCfZVI0UAPlcETmcu\ndaYfMTRkoavzoB89Cu++RYjCQli2Es+wN6h1P0jB7n6Em2oRnaLxlGyH1oWQUAk/rqYuJZzNvdvT\nxp6HLAojwbuWFZf8DY3FTXi7dei8uUTk2tHtNEGdD02HyzCk5KHtOA3tgYVosl2UV0ZTYTMQTiTV\nl8QQmLsTY+IIPNoD0G0RMn4+MvtKDHUaWD4Gki/0zwjpswXq30YT1g5NmY+kWUegzoUcmosYp0DE\njaAfBAPGoOkkkHPrEIfcsAbY9BDEpYOSCN/OpHVRJUFpd3D5nrU4n3uYLbcMI0iXx9HuLxJeNw9q\n18GcTqCEQsUW6vvY8BkkwlFF5ahIWqxzoWMbtJsEtWYY9BQYGxPUez3+XNBrdDAwG/0iB6IuB1Ns\nHZUmA/rUanzGh7FHBFL0YndqDheQat+D5+ZxWHISICYZDEEQ1pbqXl1xeFcTO1yhdoudwol1ePbX\noh0TgVK9E7OnmGVtxzBioRHHBwGYhgVD8C7oGYv2+yCi76wlb7eLhu8G4bxQh7syk7r6/QSWLKX6\nwXVY7mgDO6ZD/i4oBH6YA8HBkHoPsABiDkPGddBxJgQknrAJqhzDGYgJSyl3A/9diiiEyAa6qrMj\nzjWUAAgc7z82dAD8SdOFrxaNcinmhgikPRBfxWI8BbW4tjpx7XFR7I4hcvZ72PM3w8UeDPoGXNKH\ncdsugqMLoSQM4gZRaMmnfH0IrQuL2ZuaTsldrQl/w8qwnI+gsxG5PBLfknzQxeE2xJLTsRdx5XkE\nJNkpid+Htmwmiwd+SFr5I2hCO9J68y5EfSdqb7GhaMBy+BAieBK+fRej8dUhWmngANDtEqg7APa1\nUB0ACXeCxQdvj4ajhxC5X8G/bgVDa+gRCrohaKrL4P5KKC8GVy9Yb4LcnVBVDj/OITHMCmuOoNRX\nYEoKou/Sb1HsdbgWDWfL6Mvp9cNh0GjhUAYEG6m/MQ2PeS9is4GEr6tQnJ9DMGDUQwVgHQW5H0PO\nVti/Cx4NgVA7UI+oLkMajQipIcTcCsJ6IgRY8t4kYdn7VLkjcKVasOZ8TF1ZOKVlh9HqE7Bk7kcG\npBI1+yOEx41hcCJt3C8ibCvg3aWguDn4wou0qFyNoWIZtYMtEJkIRMLKbTAkAG1wJ+r3ryZg0Os0\nGG6iNvAWgvcvxvn6PrTOIDSFXfw26POhZQiUVsPVj/r/sTfcCutvBlcVrB8JfVeA6U+cjP1/xdlJ\nZSlPJaA64XMJJRA0kWB7BBF4F5rK+1Ccy9CG5qK90ErY3UMJjB2A98hrRLu8BCsmdCkhCF82pcXJ\nhIdeQFHntvjMA+kw/00IyiKRUuzKKsoH2BB5IwiYvZqCd3sS9sB72Ekh87bR5PWNZ20hRLYy0ydr\nAgUpL3GpvgfVxkgOaQrwKP0xOJdjvacQ10fzIa4Tcskz+PokoK1ygqsStkbAiM7IoL7UlGzFql2J\nb+VkfKI1mgsSEUGhkD4MrJ9C1HUw9w7kDg/0SMaXYkSEOhBrP0N8Ew1fboWqSrzTH6Rs42bCht4G\nl1wJQmA/+BmV3m3EybGkLhnD3lYdKep7G/2yvkL/YxZC5BNR7kNTcwcE7oTq1ZDngToHjhQdRs1c\neFEBlwaq3FBgQrolcrcNcVcV1LihRiA6P0pJaATBWwfirfagyQsiKn0c3qLl5LcOIji2lBa+S/EU\nZyMuuQN9u3F+h1iQQ0MdGN96AS6pgyGRZLfqR0ZrD2M+LgOfh+yI3oTtqIDKHXBZD1jzDUqPIP+c\nXvMlWHx3cjD/ZaJWxVC3uYzgb76BuDjYvxk+ewY6j4SFH/gz4VlDwBwNsRf7e/gtRoOrvLlb8vnB\nGZyi9hNSyqRTyahO+Fzjp9FUrxOcJYjEGEgchiFjE1rDeByaj2mIg/V1Y+n09Uf4dhYjwgIJsuRT\nbQoj5NWV6EvqoO9AkEUomlACtu8mYIsBT/0X7B4YR+iTn/LhrW2go5uEjml0z6ulZnMJnazLwFFG\n6D9uhqhnqX7xdtpXbcJQUQgLQ+GaOvSZk/FFX4gnxopu7iHYJWCUBe5/E+x1rCt7H+vgB2hZuBFX\npRNHYRnRO1agKd+NL6KQnPq9eB03ETXKh+nOwYiCesR3uxH7ghFHG2ByJhR+gcORxv5lmzg4dixt\nx1wFgO/IETQHddhKYnG3dVBw67Wk5vdB88MSlsZHMSoyH9vOw2jTp0FVBmTmQ2Ug2Mxgzafw+nDi\nJOheToE92+HjKuh+M2gknuBYxNGnoI8LzcZA3Ns+5rCSSVn7XlSmX8eF/57OijblJHtaUBrVln65\ns9hVMJ2WG6rQWS5A/8rd4DYiDSZMiYp/h+NVxWDLZeuwFriLduMb+Q4adxX532+j2+Zp8HB3qKmF\negfuJC/6WBf2reMxtkynIjCYhJVf4ItIQjHmgtMJSa1h0PUwshtERcHRbL8TBmgzCVZeBu4aSLml\nWZrueYe6Yk7lN3jcfidcWwXuQ1C4xL99UsDVkNQSTcYhAqKfwut7mOvDr0fz3jj49jnkV/NwCQPu\n6HqsIh0mToCOY+Dx2+Af8+DwarwuQcMblxAZfxRzppubX5uCCAlDJvTEvWQBZWl2aJEMGQ4YPBi2\nrSb8kx8IsCbDpjehf2eIj0XWZeCsWoyhpDvCokALO9y8GYyBHC3ZwOK2oVyjzEVW9SN0z1fsj41g\nSXotY+dsRIx4m4gdX7D+sffwzboNGeBA27oVtrDrsU55B+2dD0PBTDh4MyXz++MpK8WRkgKeetgx\nCRHUCs3Rg4gtn+MmmPijCp5Di0kJ1tImvyVUV6Bd6wDzYzDoXrA6oNO/QL4KbzrwhGspLBS0mFcD\nBUGQ3wC2HRDiRPRUEOJ6iF2Fq89g6qct4YJhVeCJQ0nti1KlYfyMLGTaVryDL6Ay5C1aOe6B0FB0\nGRnQ/24YcweunDzsX3yJSW6B7EzkpVZkm1TGzt2H7tZU2LqGYYufgnah/sTrB3KhWwdqOvRDKYyk\n+qCPrE4m6upNyOhEgh/XIeR6qKgBbxUMbQDn49BbgtkGsiMILcjG+HbWG6oTbirqzhoqv8FeD2sW\nQ8u2MHEahPQG9xFwVkGbkTD3DbjoRgJ9CoIW0EIL/R9CbM5Hm7WdwKgbILQAdiyBjG+gaA+y4C1E\n+C40//4S0wUKugAw9YuGxLaw93tE9A9obykhJgmkz4voeht0egFK8whw2eGDZyDPCfp9IK7HPjoJ\nva8dyuQnYMsq2PUtBATj3X8vgVUfcd9nCehvXERQRByiuhWxrRNw7NmH012KduUs9DVFpH/RD1fA\nbHTVwwkRN1E9exLZr/XHa96KpWYEQa9nUVO5lNT575NdUAaZd0DxXESlQNchCTnia7KCN9PSeD1K\nxmq8W1fgzQpG0y4LxW1GZIDIeR98Rti0BmGLgg5OQiojcddZkTc/jfjoCkjsgLdsB+V3x+COL8dU\n6iCgtC3K8rkYeg5FJK9G5GvwbLkT8n3oju7B5wsB378JuXwLvuo70NbNRbycCTp/iktX5rfoDy6B\nv02HOTPxHEpldItMjOFpcDQTlt6Jr7sWCqphXSXEmKH/42gDAnGUHqHspQV4r+hKbFkM1ttvRIQ7\nwLUELDMbE/VIcGSCsd0vlyRrDDDgU9j8N7CXgCmiedrw+YS6s4bKbwgMhl4jIL2Pv6xcBHV6qNoP\nIe3BUQ/OxQjXEvDuhsIjcNcocHooDWkLY++HK16C2z+BG95F9tfg0j4LriXIqHocI1PRFZtwDhkD\nW6th2OfwTRy8BL5pBsRzcbAuD2bfAvcNhOcmwsa1MCAB+unwFm5Gt+goWv0kv35Z2/H06UG1ZgoO\n0xECS3xER+dge+5yqKuC0iQCAoJJaaimqp+Z/C5rKL2sE1bjPQTX/Zs9Vx2lfvAgIuIvI9n8Im2O\n3oB18QZyrDrq32lF5oD5EFYLHecgF8Yjc4dAq6eh7l84xFbM0oKSnIpueBLGJ59BNzwNTb+bEFVd\nIc2ObC2R9ZHQ/nnoaiPkaB+cLY2IhRPhUAIYatAobsKXKoTu64n12+7oJ36PjDRimtwLJa4VjsMX\nIxuOIqKq8F1+Lb6qlghnJb4nU/HO+ABvfQS+jfPAVQrl/8H16QvoPUWw8BW4/Ql0Cz/GaJ0I6R5Y\n8S6MDOLLxJeov6YV3vK9NOha4N2yAJ2uPfpueryV9QQrbjpmtUDo9GAYCbrBUP8geAv8T0qmtOPn\nhFA00ONfoAs8G631/Efd8l7luIy+Gdr38B9XboO9ddDWAxqTf0S9uo1/NoCmPdTug892QHAonn/2\n/eV1dAZcsj2equvRR19HRf9JWMNfQ5O2BeePT6O5+T20zz0M9Ufw9e2M3L4Dz+gctJsLEYcqQIYj\nduZAggF06cghL+G+cC6G4ofg7QeRgQbqEtbjaz0AC4+gqdkGm/VQsQsZuZu6jLY4LwsHqxFjfTbh\n+5MQ646ytk8BQVUz6dRhBv31R/mh3E6atQPh70xB2GvxhI0lJOsIgfsqEKHdOOzT4HPbqT9gwzJi\nKN6doRz25OIONOLL741i644HLcL1KZocDXLhbBhej6gYiHAI6FMKB2dAx1sQKY+jyPvw5e5BycyA\nSe/CkvcRgZsxGp6EA2+ARUEz9HVE7UyEJxFzu9V4cm3UVtRiLfkQzeMfoayYgMZiR5vUGmk6iHf3\nLbh/1OKyhuPMcWKLr8IRBa5WGRgTXBTmL0MftR1zt33sjbqSbFsZJTUeoiPgQLeBdJj3Crq1X0C/\nVCInd6GlSEXjyfd/zwDGK6F2GVR1h5B9II6zi8ZPCAFa0xlpmn861JiwynHpfuHPg3OhtdBxIBz9\nCso2Qlp/2L0dej8PQg8pHfxytQW4jZbfXKohvhBrXhRlKc9iCByJlmjoMhrTqrepGvgUgXE+dJoA\ntJWHkLUS3qrDN7AOeZ0AbwUCDR6LgmQnyufXYBBahHEj3nZmPL4qLDtLEHVaaP0otHwWj95B5bQk\nNNruGHbbsL20AKXjRoTVCsFe0AYwoLoT++vXsyrjBvq2qKFfq3h+mHwlbac8Ttj4qZRMnEjytBSU\n+PGw/mE8VffTcOvteEvrEUd2IH2x1LQIxaRtRU1uLo7ytRxJNPNC3lA6hqRzx00bCduuQNYmyK6D\nJCOMcMPGSojfR4BtO3UtXATGhsP2pYgwD3SfBQH9oeAt+L9n0Xo2I+0eMA2A/pPR7p+Pbv1BCOqA\n2HI7xPug0oPYvBvx8Ex88TF4C7/C+9BsHAedVAXF4XqzjrqL/k3cbaUErdpJ7aSbMVW+RlfbZJyr\n3ycmvCP6kqN0fH4RPPsBfDeDqJ25WCbNQvg04M3x92x/wvwo+CrA/iaYp5zhRvgXQY0JqxyXnxyw\nsxACw2DAZMjcB2E9wVQN7z0Eg9/6ZZ28VRQb2tPmmFNOMhGtO+KqzKWOBQQwwv84W/cEYthuAlcX\nIWo8cGEwfBwCWgfS5EJZD25vNM5uPsrSNNSmBhPgEugdXmJ+rEJTWI04WIum1TAcW77FOHwiIiQd\nlr+EhjjC4t5FICAKfNUDYcENyFgvIukIRCuw73FSfFOJ3PYxq2/qTrfttXQd2JUtM98ieNVbpKQl\no6zdAzXd8Epob51DyVgj7qldORyajcYyC1d5JSbFTdnlKeh8nYhfv4CLLd+ghHjZb0jm9nbTeaDV\no3RZmo3xukcQ9V9A1jY4GIHFVk5pnygs+WNh7yyE1QVxF8NDN8KdD8KhFWCbjfDaodXL0KCAUVCe\nEIZ591ZE90mQEAu+FVC1CWa/gjalG1q3EeXRrxC7J2B56j28W2YQUfQDHvpg7lVGcIUXYXsURAfi\nTVswFFqhXUdYXgGJ3VFkAzVdW2Fd/CqioRqCWoHmmMTrmiSwLgTP7jPdAv86nIUpak1BdcLnKnvv\nAncRxHUDMc3vnC3B0FDtH6D5ibpCOPwNxYb+v6hezUeEJE+hjs+JZA5m2R/sT4FrPiImDu270dj7\npqB8uB2uewHPJ7dSmGrFPWoAwd/sJCQ3j8AFGmRyHG6rhfp2kvL0vtj07al/exbOzZ8S3EePCGgD\nxbOg5FvEoAc5dpm8culVyM9vxLe3DuWqrxG5K+HQdNBOx5ragYFFtey7tgqpr6TDRdPZd9cyNm7L\nZuD0S9HaeiC+eY74oiLMNQFQmUZBkkKC8VY8RU+i/fQAvotT8fRpj8/pYKJ7PpVrw9g68iXahni4\nruJzvKPMLBB3kdpyPgHjFkDJ4+i/CsTVKQj7R3mY3bXI0dMQn7wH2Zvgn5ngLoHrdKD3wTsvQ8Im\nWG0hxOKiOtmCbdn7MLA7GFdDjw4wdy8yUouY9BU6rxnbo4+iHzwEUmaC7wL0kbPwZryFr+oplMSd\niOpVGBtqIHoYtIsEsQukD0/lfrzlBmonfkjQjMdgzZtQXwsPvP/LdqFNO3Nt7q/GORKOUAfmzmUS\nHvLvTdbimHwAtigoyv65XHUY9swlxJXz31NeqpDY0RJNEBMwMwi8e0CWg2EqHLgP4bBhXpiJfXwS\n9sxHqJ5yP7YZ1SQtTCIsuy1KlAculog7pqG/7yNsmlCsawqpv24q+vG3Y73hYgwTboXM5RB3P1gc\nUPOxP479E0KARY+s0eJ9/XUY9yToUyC4G9IZgZKznbaf19BqwyDCHlpI0rARVO7aTeaiSkjujQht\nS70nEN/NRiomaCH9KoT7KbTDv0KaDSjvvIFhzfsYWwYhNpgI3VvIsH0HeTZyONlxtWT57mF3zTDa\nHoqgY/HVfLuzD772PTAkDkCEroc9TmSeB/btgnmfQBcXJHig7xvQbz2MM8ON38C8tVg6XwamYIgW\nkLEZ9qfgq9BQFjkM92E7suIIvllvYPpyAa7JE5F1PSH+WzC0RJMQjwh9HKf3Znxlf8dWfRg63ggx\n/aBHIGgU5O0LUDw+LJYLYNpyaH0RxKec+Tb2V0bd6FPlpERdDRFj/Mc/hSikhNI8ePWmn+V0Zkge\nQ7Ex9b+naviUQK4EQKFxpFzbAQJnwgs/wvT74JrHIKwc8yebCOj1T8K32rBc0M6/S/QzCyEqDawN\n8OwEUMx4ht+Hd8QqAsdZMV9+Kca8HRDVGbp0gS0P+GOqZYFw5CP4YhhseQ1+/AARqkFz8w2I3v2R\nnzwCIx+CxFjElOUoo+ehqUzBtH0/4vqriFn7KZc90QFzck/qG56gocdBAieUojeHsNt3JXGuLNgf\nhchaCP3b4Rs9FJmbBUvzkNH3ImNjoGgH4l/tYOtjmFNe4qa2N5K35x7e+ORSckfGM13Xnpwf1uMY\nYfGHYmY8g+zihP0bwJMEIeHwwZ2w6R6I6gMhHcASjoiyUtC9BT5bC6TGjq/8IPbdRQSExKPJq8D9\nwAPIvCOI1inopr+MaPug/3ura3eozAAAEjxJREFUmA3Vn6ME3YRBOweXdTeOvlqkJQYq9sC2F6Du\nKLqY7ugGP4Hy08Npn3EwYtKZbmV/bdSNPlVOSuRxsmEJAUMnwhev/XzOFAqDX4Gv1gPgYj8ONhHM\nrb+t/9Vsf14GSwDEtQadC1GuhU/eg7F3oszdjk9KqNgLQWlgzIaWJnipA85rLkAfWI/oZ4R9U6Cs\nADQroTIC6o9A6gNQ5QRzF+h0Eex4FnJKwKRH7PsPmlaJUFwO+iI4+C0s7A0dzTBmNbhvgpVrIN6I\nsieT+KtfwiOqELur0QVp0aTdTlj9cnS6dNwtWlKcVohI74vt1dl4745GWVKN/rvncVyvxWBaAymv\not96AN6+BXwBsPd7+t77AW3CkzjS/S3kHUXUzx6M7Zsu+CZnYp9XivmeKDRV1ZDaAio3Q8b34MiD\nEMCUgrQvJmJza0q3N2AzG1EiAjBptRC9D9G6I5rDR5GPTEGEt/nlZ16zxL+YAoEQNrSFqbgjMvD4\nZqJLvA1sKWCwAhAddN3P9YaMB63utJqQyilQwxEqJ+VEyaB7jIa+V/xcDmoB1oT/Fit4DQ+FSBy/\nrTv8WujQC656Ap68ErzJcMMsuOtF6HkRCIGiKJDzjT8HgcYBoRaI7oSzZB98bIKUkTDgE7jlMRjx\nIXT6B1y8AVYvgy7XwZb3IH4YjFwO9hpIjgGPAH0c3LEaErZCy9bgcoJzJOjfAOulMKI9dFkOIeUY\nPqkm4NV6jNuD8bjMeBx7CHEcAdvf0A59iFg5lZjcLRgvlpiP9MOUokG5IxLzBgXthz70QaNg2MNQ\nWQaHPodxU6DdKMJpj4hIx5tkQLN+C4RGIEb1wDxrBg0Pv4QrcAjeglwwuKDdG/ClFQ4W4d13B97M\nfZjnfkX+hM7oRo1FO2AwyrMbUDQBCEsSlB1CvNkNDn33y89cEwIJn4NiAK8L7X4Ly1e8jCK6IhUt\n9HsV9EH+r5xjZkOoDvjMc47ME1ad8PmGEDD8xMtSfVQTzvMoHGeuqFYHHYbAui+h64Xw+HcwfCLE\ntf1ZpmAD7JkDgR0gaTrcsATZ+mocZge+xV7Ezhq/3C2PNuqjQHA0jHgQFj8DJhuUH4bPr/Evv059\nCrw+6PEA5K6Bhg4Qo0ByfxAucApwloLHC9YBiCseQNw+FVnmQzlQjumzKrw5n1MRMRXsBxA5T0Hu\nWGAXoioCjeMLFGdrNKVt0QxqjZJUCo/Ewcw+EBkFj+wGDbDkflj9Tzq4L6NyTBjlxhrExSMQ2osR\nprVYUmNxLX0XX3kBMvVv0GUsWILxzJhN3iOH8CRqMQ8LpdX67xFCC7a2/h1EWveEVR/ABQNAfxG4\nvOBr/NVK6d88VDH7y/+5EiI7AwKN0gshFEi4CLTm02kRKn+UcyQmrIYjzkeUE//vDOE+jKSfuO7I\nG/2vE+Guh/pCfOZQfLa7OeBbw+FBZaTvMaDt0g+xbgvEfOh/XD6WlH6QvQU8Dlg/E4oywRIO1laQ\nVwkrF8PNjyBD2kHFLkTJDGgIAns0eBrnClX9CNER+Mo3IsMiUKyB6A5lIF/Npr39cUjuhwwZA7Xb\noSIUoVRDgICDWqjaC46O0L077P8S8kKgcgPk9IKIlmB2QkwnNLs2E7PgACUPJlK850kiWi3G9/3f\nUYZdh3mUROavx53fDn3vaBwTXqH2n09g63UTSuw6hOyOYp2P3L0QEf6i/x/imMeg0yiYdxPklsB3\ni6DdCL89QoCmcWGFzwMHv4TUa+HIr7pW6kaczcM5Eo74w05YCBECfAK0BHKAK6WUVSeQ1QA/4t93\nafQfvafKqTHS+fQuoGjJHziJ7aZ5aNGRovRkqD2K+l3/QDNtNuz8Gg5ugSc/g2ETocdIfz29EYbd\nBzMvh6Mr/Vm+blkJphC8SWk4Nu5GbL0Tqdfjm3grrrKHUKoXodeuo3htKu4aM7HXTsDS8y5cT16M\nYUAIhO6lul80hy0X0THkLkjqgpASNraChjI48iNY6iFuPMQnQ2UB5B8BbRvoFA6vAOV2eO/v0KY9\nhMTgLSghyHU9B0ND2D0onCEaK8pX2cjneqJsWwkjD6N4jf7PMjUV47sL/fY9mQaL1uN5ugd1Rgj8\nYSuU/RvG3gYtO0GrdjDoapj39PE/17pC6D0N2l0J2+ed3nek8qfidMIRjwDLpJQpwIrG8om4F9hD\nExIcqzQfEh/bIopY0xYCCGY4k2hFV9wZr2PYWQn2arhgLAgHPLEAqkvhsdHw+CX+5ENCwE0fgLRB\n9ACcDVr2334nJWu3YF++AvvXX1AstVSvWoXP4UTT+ja0veeReKeeNv8YhGXkU+TVvod2iBHRYxqU\nP8CGjEnkdhuA0qrLz4pqBez/T+OodWuoOAyGEOhzN0z4FG5aCkdXQ1kdjNfAN/Pg0gGwNxN3SQkB\nEf3o83kkDq2X6vlTkFESH4/AwLlgCEGYjxMe6JMEye2pj29JTbAXHnobfF54YZJ/92y3HVqlwITp\n/mx4v8YYAv2e/O15lb88pxOOuAT4aUnPbGAVx3HEQog4YCTwLHD/adxP5SzQ2XAVXX61L6Ez+2us\nReEQ185/oqHKHxIZdTsYzLDhC5j5N7jzFTAFwuTF8NEkDONiafXW2/heKcaZPpmAJR8R2j0Vrp8E\nmmMGoeR8ZOE7bM77G+WRPSm+8HEuaOgMuQ/TIiSMwvor8Jk9KA25ENAK2uVBj8nw9RcQ2h+6BoFt\n4s/X278Kqhxwe1fomAnxD4LWBk/fi+/SSWgTkrDtzKbXtY9zOPRqOul7IHXOk4cFOgyAKxqIra/C\nVVQOXgeMuxMyNsBTE0G3GhKGQJ/Jx6+vP0m+B5W/NKfTE46UUhY3HhdzzL5Kv+IV4EHAdxr3UjkL\nCBT/kuNjcLCZht4+vFOm/Xyy3QDIWuM/vvB6eOJTeGAWmBrzV8SlweB7YOFUNBWH0bVsg2VgX8Ss\nBWALg1vHQeZOOLgPgHxRyesxidRGjWPY1scorZhHrrkcNpdhzTtK3JEVKFuvhdWdIHMKRLwLpmsg\nzAnaH2Hl6/5cu+AfDPv2dbhnE7SJgeSnoU1HeOo1+Hg1lUu+wJmdDT4fIfY4At3RVD30OEJ3zPSw\n42HuBAOjUHRByL4vgL5x/nWHXvD4bCiKhDkfHr8XrHKOcm6MzJ20JyyEWAZEHeetaccWpJRSCPGb\nUIMQYhRQIqXcLoQYeCplxo0b99/jdu3a0b59+1NV+UOsW7fujFy3OTlTNpmDj9JhgJ5FG8G70x/L\njC06TMcFz7Gy56PYjbbj1tO7ahm58W2O7tiMgg/jruGs7uxPPKPrfTF97rmB4MIjzHxzKlXRobTO\n0FPq9LFWfwWJlT/yXefX6Jw8iIj89Wzcfxl7G+qJ1gbhyXRQm/Evqrwt6OaNp8zWigssG/DMjWOn\n8wq8VUaEDOfw0o0YvANxrQtErvs5BpuwM4OGBgcObQmb589H6i/BlD+D+q09kfYTx2oNSi0dQhZy\nuLAfFVoL/PhL2TYt+pC48wcK7ruCXb2uPOln+mdsf3Bm7dqzZw979+79H1/1zIzMCSGewr9xZGnj\nqUellEtPWEFK+YdeQBYQ1XgcDWQdR+bvQB6QjX+P2HpgzgmuJ88Wc+fOPWv3OlucKZvcslBW+d76\n5cn8vVJOMEpZknPyyoX7pHxxiJQr3pDy6Z7/Pb1N5sg1GfPluhkTZfXUm6RsqP9N1VpflZxvf01u\neu5KKZfP+u21vW4pP0uQcuM9UpZMl/LNdCmfjZDyFrOUBVknVKng0UelMztbyinX+C8jnXK9vENu\nk0+e3BYppTxw9all9u+Q0uU8qcifsf1JeXbtavQXp+O/JFT/jlfT7wc8CdzfVPnTiQkvAW4AXmj8\nu+g4Dn4qMBVACDEAmCKlnHAa91Q5y2gII0hM/OXJ2LZw9XPgPcVjWlQK3PeNf9FGZQEAWRTyOitI\nSYviwbT3UDh+HNYirPQzjuHTy6vp9uUKRIchEHHMVu6KFtrfB4oOLKlwtRXmLPLv4hx14pwLYXff\njS46GgwmsDegmMy04y4yeeXktnjrweeE+m0Q0OXEcskdT34dlXMI+5m8eJPnHZ5OTPh54EIhxH5g\ncGMZIUSMEOKrE9RRZ0ecZwi0CAy/fWP4PWBrwrbqWh0EhsLoaXjwUUE9/8dYHmLECR3wT8QQj6kk\niC03XAZzpkD9r2ZAJt8E4b1AEwwN82HAlXDLZycdYNNFR4PH449NZ+0AIJj2tOdevLhOrIxQoG4j\nVJ34qVLlfOOMxoTvFkLsFEK8K4QIPpngH3bCUsoKKeVQKWWKlHKYbJwjLKUskFJefBz51VLKS/7o\n/VTOMRTFPzOiqehNaFHoTWviCPnNAOCJCMwJpdZmoiosAPloN/AdM76rs0BoJ0AB5yZoN7Bpumg0\nsHIJfDbrv6dspKFBf+I6igliHwN9bNPuoXIe8MfXLQshlgkhMo7zugR4E0gEOuEPw758Mi3UFXMq\n5zyDGMHyoRn03bYC84GN0Kb3LwX0aRB4mz9PQ1MQAq647eftg5pK+C3gPPz76qicw/zxWQ9Sygub\nIieEeAf44mQyau4IlXMeBQ1Bcb158+/jqHEWHF/INh2U48/UOC5jJ0KXPr9TET2Y2p5aTuU84cxk\n8BFCRB9TvBTIOJm82hNWOS/oyQBiLC04kF5E1+MJaMJ/3wWtNv9L5S/MGZv/+4IQohP+MbBs4PaT\nCatOWOW8oQWJxNOyudVQ+dNwZmZH/N4ZYKoTVjmvEGoETeV/xrmRRk11wioqKn9Rzo0l5qoTVlFR\n+Yui9oRVVFRUmhG1J6yioqLSjKg9YRUVFZVmRO0Jq6ioqDQjZzSBT5NRnbCKispfFLUnrKKiotKM\nqDFhFRUVlWZE7Qk3G3v27GluFf7n/Bltgj+nXX9Gm+B8tEvtCTcb//u9qpqfP6NN8Oe0689oE5yP\ndqk9YRUVFZVmRO0Jq6ioqDQj58YUNdG4O2izI4Q4NxRRUVE5L5BSNnkzzV/zR/zN6dzvpLqcK05Y\nRUVF5a+ImpxVRUVFpRlRnbCKiopKM/Knd8JCiJDG7an3CyG+E0IEn0RWI4TYLoQ46e6o5wJNsUsI\nES+EWCmEyBRC7BZC3NMcup4KIcRFQogsIcQBIcTDJ5D5V+P7O4UQnc+2jn+EU9klhBjfaM8uIcQ6\nIUR6c+j5e2nK99Uo100I4RFCXHY29Tvf+NM7YeARYJmUMgVY0Vg+EfcCe/Bv0Heu0xS73MB9UspU\noCcwWQjR7izqeEqEEBrgdeAioD1wza91FEKMBFpLKZOB24A3z7qiv5Om2AUcBvpLKdOBp4G3z66W\nv58m2vWT3AvAUuCMDGj9WfgrOOFLgNmNx7OBsccTEkLEASOBdzg/Gs0p7ZJSFkkpdzQe1wF7gZiz\npmHT6A4clFLmSCndwHxgzK9k/murlHITECyEiDy7av5uTmmXlHKDlLK6sbgJiDvLOv4RmvJ9AdwN\nLABKz6Zy5yN/BSccKaUsbjwuBk70430FeBDwnRWtTp+m2gWAECIB6Iz/x34uEQvkHVPObzx3Kplz\n3WE1xa5juRn4+oxq9L/hlHYJIWLxO+afnljOhyfLZuNPsVhDCLEMiDrOW9OOLUgp5fHmBwohRgEl\nUsrtQoiBZ0bL38/p2nXMdSz4eyX3NvaIzyWa+gP99dPJuf7DbrJ+QohBwE1AnzOnzv+Mptj1KvBI\nY7sUnB9Pls3Gn8IJSykvPNF7QohiIUSUlLJICBENlBxHrDdwSWPs0QgECSHmSCknnCGVm8T/wC6E\nEDpgIfCRlHLRGVL1dDgKxB9TjsffuzqZTFzjuXOZpthF42DcLOAiKWXlWdLtdGiKXV2B+X7/Sxgw\nQgjhllIuOTsqnl/8FcIRS4AbGo9vAH7jiKSUU6WU8VLKROBq4PvmdsBN4JR2NfZC3gX2SClfPYu6\n/R5+BJKFEAlCCD1wFX7bjmUJMAFACNETqDomFHOuckq7hBAtgM+B66SUB5tBxz/CKe2SUiZJKRMb\nf08LgDtUB3xi/gpO+HngQiHEfmBwYxkhRIwQ4qsT1DnXH3WhaXb1Aa4DBjVOvdsuhLioedQ9PlJK\nD3AX8C3+mSmfSCn3CiFuF0Lc3ijzNXBYCHEQ+DdwZ7Mp3ESaYhfwBGAD3mz8bjY3k7pNpol2qfwO\n1GXLKioqKs3IX6EnrKKionLOojphFRUVlWZEdcIqKioqzYjqhFVUVFSaEdUJq6ioqDQjqhNWUVFR\naUZUJ6yioqLSjKhOWEVFRaUZ+X/cacw9dGWH1wAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1113,7 +1123,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.9" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 2f32f3d9a..9460b8c32 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -342,7 +342,18 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Run openmc in plotting mode\n", "executor = openmc.Executor()\n", @@ -358,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\nAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX///9yEhLpgJFNv8Tq\nQYT7AAAAAWJLR0QAiAUdSAAAAAd0SU1FB98JFQMZGiFPL70AAALKSURBVGje7dpLcqQwDAbgHHE2\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/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTUtMDktMjFUMTA6MDg6\nNTcrMDc6MDALr51VAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTA5LTIxVDEwOjA4OjU3KzA3OjAw\nevIl6QAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDJUMjM6NDg6NTQtMDQ6MDDJCXMCAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAy\nVDIzOjQ4OjU0LTA0OjAwuFTLvgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -387,13 +398,12 @@ "cell_type": "code", "execution_count": 15, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", - "tallies_file.tallies = []" + "tallies_file = openmc.TalliesFile()" ] }, { @@ -569,8 +579,9 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: b167d70c877c516deca785801b9fa6f53fb0985b\n", - " Date/Time: 2015-09-21 10:25:26\n", + " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", + " Date/Time: 2015-10-02 23:48:55\n", + " MPI Processes: 1\n", "\n", " ===========================================================================\n", " ========================> INITIALIZATION <=========================\n", @@ -625,20 +636,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 9.1800E-01 seconds\n", - " Reading cross sections = 6.5800E-01 seconds\n", - " Total time in simulation = 1.7037E+01 seconds\n", - " Time in transport only = 1.7024E+01 seconds\n", - " Time in inactive batches = 2.8600E+00 seconds\n", - " Time in active batches = 1.4177E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", + " Total time for initialization = 5.7300E-01 seconds\n", + " Reading cross sections = 1.2700E-01 seconds\n", + " Total time in simulation = 2.1409E+01 seconds\n", + " Time in transport only = 2.1383E+01 seconds\n", + " Time in inactive batches = 2.7630E+00 seconds\n", + " Time in active batches = 1.8646E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 1.0000E-03 seconds\n", - " Total time elapsed = 1.7971E+01 seconds\n", - " Calculation Rate (inactive) = 4370.63 neutrons/second\n", - " Calculation Rate (active) = 2645.13 neutrons/second\n", + " Total time elapsed = 2.1994E+01 seconds\n", + " Calculation Rate (inactive) = 4524.07 neutrons/second\n", + " Calculation Rate (active) = 2011.16 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -746,13 +757,6 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -767,9 +771,8 @@ "" ], "text/plain": [ - " nuclide score mean std. dev.\n", - "bin \n", - "0 total (nu-fission / absorption) 1.046353 0.00935" + " nuclide score mean std. dev.\n", + "0 total (nu-fission / absorption) 1.046353 0.00935" ] }, "execution_count": 26, @@ -809,22 +812,17 @@ " \n", " \n", " \n", + " energy [MeV]\n", " nuclide\n", " score\n", " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", + " (0.0e+00 - 6.2e-01)\n", " total\n", " absorption\n", " 0.95873\n", @@ -835,9 +833,8 @@ "" ], "text/plain": [ - " nuclide score mean std. dev.\n", - "bin \n", - "0 total absorption 0.95873 0.00774" + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total absorption 0.95873 0.00774" ] }, "execution_count": 27, @@ -880,13 +877,6 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", @@ -901,9 +891,8 @@ "" ], "text/plain": [ - " nuclide score mean std. dev.\n", - "bin \n", - "0 total nu-fission 1.091622 0.011163" + " nuclide score mean std. dev.\n", + "0 total nu-fission 1.091622 0.011163" ] }, "execution_count": 28, @@ -949,20 +938,11 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", - " 0.0e+00 - 6.2e-01\n", + " (0.0e+00 - 6.2e-01)\n", " 10000\n", " total\n", " absorption\n", @@ -975,8 +955,7 @@ ], "text/plain": [ " energy [MeV] cell nuclide score mean std. dev.\n", - "bin \n", - "0 0.0e+00 - 6.2e-01 10000 total absorption 0.802012 0.006609" + "0 (0.0e+00 - 6.2e-01) 10000 total absorption 0.802012 0.006609" ] }, "execution_count": 29, @@ -1014,27 +993,16 @@ " \n", " \n", " energy [MeV]\n", - " cell\n", " nuclide\n", " score\n", " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", - " 0.0e+00 - 6.2e-01\n", - " 10000\n", + " (0.0e+00 - 6.2e-01)\n", " total\n", " (nu-fission / absorption)\n", " 1.246604\n", @@ -1045,13 +1013,8 @@ "" ], "text/plain": [ - " energy [MeV] cell nuclide score mean \\\n", - "bin \n", - "0 0.0e+00 - 6.2e-01 10000 total (nu-fission / absorption) 1.246604 \n", - "\n", - " std. dev. \n", - "bin \n", - "0 0.011825 " + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total (nu-fission / absorption) 1.246604 0.011825" ] }, "execution_count": 30, @@ -1087,22 +1050,17 @@ " \n", " \n", " \n", + " energy [MeV]\n", " nuclide\n", " score\n", " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", + " (0.0e+00 - 6.2e-01)\n", " total\n", " (((absorption * nu-fission) * absorption) * (n...\n", " 1.046353\n", @@ -1113,13 +1071,11 @@ "" ], "text/plain": [ - " nuclide score mean \\\n", - "bin \n", - "0 total (((absorption * nu-fission) * absorption) * (n... 1.046353 \n", + " energy [MeV] nuclide \\\n", + "0 (0.0e+00 - 6.2e-01) total \n", "\n", - " std. dev. \n", - "bin \n", - "0 0.01894 " + " score mean std. dev. \n", + "0 (((absorption * nu-fission) * absorption) * (n... 1.046353 0.01894 " ] }, "execution_count": 31, @@ -1179,87 +1135,78 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", " 10000\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " (U-238 / total)\n", " (nu-fission / flux)\n", - " 0.000001\n", + " 6.641746e-07\n", " 6.859257e-09\n", " \n", " \n", " 1\n", " 10000\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " (U-238 / total)\n", " (scatter / flux)\n", - " 0.209986\n", + " 2.099861e-01\n", " 1.966887e-03\n", " \n", " \n", " 2\n", " 10000\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " (U-235 / total)\n", " (nu-fission / flux)\n", - " 0.355667\n", + " 3.556665e-01\n", " 3.717881e-03\n", " \n", " \n", " 3\n", " 10000\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " (U-235 / total)\n", " (scatter / flux)\n", - " 0.005555\n", + " 5.554650e-03\n", " 5.218094e-05\n", " \n", " \n", " 4\n", " 10000\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " (U-238 / total)\n", " (nu-fission / flux)\n", - " 0.007165\n", + " 7.165057e-03\n", " 5.625590e-05\n", " \n", " \n", " 5\n", " 10000\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " (U-238 / total)\n", " (scatter / flux)\n", - " 0.227653\n", + " 2.276535e-01\n", " 8.544314e-04\n", " \n", " \n", " 6\n", " 10000\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " (U-235 / total)\n", " (nu-fission / flux)\n", - " 0.008089\n", + " 8.089493e-03\n", " 5.080374e-05\n", " \n", " \n", " 7\n", " 10000\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " (U-235 / total)\n", " (scatter / flux)\n", - " 0.003370\n", + " 3.370111e-03\n", " 1.361116e-05\n", " \n", " \n", @@ -1267,27 +1214,25 @@ "" ], "text/plain": [ - " cell energy [MeV] nuclide score mean \\\n", - "bin \n", - "0 10000 0.0e+00 - 6.3e-07 (U-238 / total) (nu-fission / flux) 0.000001 \n", - "1 10000 0.0e+00 - 6.3e-07 (U-238 / total) (scatter / flux) 0.209986 \n", - "2 10000 0.0e+00 - 6.3e-07 (U-235 / total) (nu-fission / flux) 0.355667 \n", - "3 10000 0.0e+00 - 6.3e-07 (U-235 / total) (scatter / flux) 0.005555 \n", - "4 10000 6.3e-07 - 2.0e+01 (U-238 / total) (nu-fission / flux) 0.007165 \n", - "5 10000 6.3e-07 - 2.0e+01 (U-238 / total) (scatter / flux) 0.227653 \n", - "6 10000 6.3e-07 - 2.0e+01 (U-235 / total) (nu-fission / flux) 0.008089 \n", - "7 10000 6.3e-07 - 2.0e+01 (U-235 / total) (scatter / flux) 0.003370 \n", + " cell energy [MeV] nuclide score \\\n", + "0 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (nu-fission / flux) \n", + "1 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (scatter / flux) \n", + "2 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (nu-fission / flux) \n", + "3 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (scatter / flux) \n", + "4 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (nu-fission / flux) \n", + "5 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (scatter / flux) \n", + "6 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (nu-fission / flux) \n", + "7 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (scatter / flux) \n", "\n", - " std. dev. \n", - "bin \n", - "0 6.859257e-09 \n", - "1 1.966887e-03 \n", - "2 3.717881e-03 \n", - "3 5.218094e-05 \n", - "4 5.625590e-05 \n", - "5 8.544314e-04 \n", - "6 5.080374e-05 \n", - "7 1.361116e-05 " + " mean std. dev. \n", + "0 6.641746e-07 6.859257e-09 \n", + "1 2.099861e-01 1.966887e-03 \n", + "2 3.556665e-01 3.717881e-03 \n", + "3 5.554650e-03 5.218094e-05 \n", + "4 7.165057e-03 5.625590e-05 \n", + "5 2.276535e-01 8.544314e-04 \n", + "6 8.089493e-03 5.080374e-05 \n", + "7 3.370111e-03 1.361116e-05 " ] }, "execution_count": 33, @@ -1416,21 +1361,12 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", " 10000\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " U-238\n", " nu-fission\n", " 0.000002\n", @@ -1439,7 +1375,7 @@ " \n", " 1\n", " 10000\n", - " 0.0e+00 - 6.3e-07\n", + " (0.0e+00 - 6.3e-07)\n", " U-235\n", " nu-fission\n", " 0.867982\n", @@ -1448,7 +1384,7 @@ " \n", " 2\n", " 10000\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " U-238\n", " nu-fission\n", " 0.082801\n", @@ -1457,7 +1393,7 @@ " \n", " 3\n", " 10000\n", - " 6.3e-07 - 2.0e+01\n", + " (6.3e-07 - 2.0e+01)\n", " U-235\n", " nu-fission\n", " 0.093484\n", @@ -1468,12 +1404,11 @@ "" ], "text/plain": [ - " cell energy [MeV] nuclide score mean std. dev.\n", - "bin \n", - "0 10000 0.0e+00 - 6.3e-07 U-238 nu-fission 0.000002 1.284890e-08\n", - "1 10000 0.0e+00 - 6.3e-07 U-235 nu-fission 0.867982 7.022256e-03\n", - "2 10000 6.3e-07 - 2.0e+01 U-238 nu-fission 0.082801 6.087096e-04\n", - "3 10000 6.3e-07 - 2.0e+01 U-235 nu-fission 0.093484 5.275039e-04" + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10000 (0.0e+00 - 6.3e-07) U-238 nu-fission 0.000002 1.284890e-08\n", + "1 10000 (0.0e+00 - 6.3e-07) U-235 nu-fission 0.867982 7.022256e-03\n", + "2 10000 (6.3e-07 - 2.0e+01) U-238 nu-fission 0.082801 6.087096e-04\n", + "3 10000 (6.3e-07 - 2.0e+01) U-235 nu-fission 0.093484 5.275039e-04" ] }, "execution_count": 37, @@ -1509,21 +1444,12 @@ " mean\n", " std. dev.\n", " \n", - " \n", - " bin\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", " \n", " \n", " \n", " 0\n", " 10002\n", - " 1.0e-08 - 1.1e-07\n", + " (1.0e-08 - 1.1e-07)\n", " H-1\n", " scatter\n", " 4.620525\n", @@ -1532,7 +1458,7 @@ " \n", " 1\n", " 10002\n", - " 1.1e-07 - 1.2e-06\n", + " (1.1e-07 - 1.2e-06)\n", " H-1\n", " scatter\n", " 2.036841\n", @@ -1541,7 +1467,7 @@ " \n", " 2\n", " 10002\n", - " 1.2e-06 - 1.3e-05\n", + " (1.2e-06 - 1.3e-05)\n", " H-1\n", " scatter\n", " 1.659916\n", @@ -1550,7 +1476,7 @@ " \n", " 3\n", " 10002\n", - " 1.3e-05 - 1.4e-04\n", + " (1.3e-05 - 1.4e-04)\n", " H-1\n", " scatter\n", " 1.861546\n", @@ -1559,7 +1485,7 @@ " \n", " 4\n", " 10002\n", - " 1.4e-04 - 1.5e-03\n", + " (1.4e-04 - 1.5e-03)\n", " H-1\n", " scatter\n", " 2.049664\n", @@ -1568,7 +1494,7 @@ " \n", " 5\n", " 10002\n", - " 1.5e-03 - 1.6e-02\n", + " (1.5e-03 - 1.6e-02)\n", " H-1\n", " scatter\n", " 2.162157\n", @@ -1577,7 +1503,7 @@ " \n", " 6\n", " 10002\n", - " 1.6e-02 - 1.7e-01\n", + " (1.6e-02 - 1.7e-01)\n", " H-1\n", " scatter\n", " 2.224496\n", @@ -1586,7 +1512,7 @@ " \n", " 7\n", " 10002\n", - " 1.7e-01 - 1.9e+00\n", + " (1.7e-01 - 1.9e+00)\n", " H-1\n", " scatter\n", " 1.997585\n", @@ -1595,7 +1521,7 @@ " \n", " 8\n", " 10002\n", - " 1.9e+00 - 2.0e+01\n", + " (1.9e+00 - 2.0e+01)\n", " H-1\n", " scatter\n", " 0.373472\n", @@ -1606,17 +1532,16 @@ "" ], "text/plain": [ - " cell energy [MeV] nuclide score mean std. dev.\n", - "bin \n", - "0 10002 1.0e-08 - 1.1e-07 H-1 scatter 4.620525 0.038249\n", - "1 10002 1.1e-07 - 1.2e-06 H-1 scatter 2.036841 0.013203\n", - "2 10002 1.2e-06 - 1.3e-05 H-1 scatter 1.659916 0.010107\n", - "3 10002 1.3e-05 - 1.4e-04 H-1 scatter 1.861546 0.013328\n", - "4 10002 1.4e-04 - 1.5e-03 H-1 scatter 2.049664 0.008215\n", - "5 10002 1.5e-03 - 1.6e-02 H-1 scatter 2.162157 0.010245\n", - "6 10002 1.6e-02 - 1.7e-01 H-1 scatter 2.224496 0.013796\n", - "7 10002 1.7e-01 - 1.9e+00 H-1 scatter 1.997585 0.009161\n", - "8 10002 1.9e+00 - 2.0e+01 H-1 scatter 0.373472 0.003922" + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10002 (1.0e-08 - 1.1e-07) H-1 scatter 4.620525 0.038249\n", + "1 10002 (1.1e-07 - 1.2e-06) H-1 scatter 2.036841 0.013203\n", + "2 10002 (1.2e-06 - 1.3e-05) H-1 scatter 1.659916 0.010107\n", + "3 10002 (1.3e-05 - 1.4e-04) H-1 scatter 1.861546 0.013328\n", + "4 10002 (1.4e-04 - 1.5e-03) H-1 scatter 2.049664 0.008215\n", + "5 10002 (1.5e-03 - 1.6e-02) H-1 scatter 2.162157 0.010245\n", + "6 10002 (1.6e-02 - 1.7e-01) H-1 scatter 2.224496 0.013796\n", + "7 10002 (1.7e-01 - 1.9e+00) H-1 scatter 1.997585 0.009161\n", + "8 10002 (1.9e+00 - 2.0e+01) H-1 scatter 0.373472 0.003922" ] }, "execution_count": 38, @@ -1649,7 +1574,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.9" + "version": "2.7.6" } }, "nbformat": 4, diff --git a/openmc/cross.py b/openmc/cross.py index e2281142c..f361313b3 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -14,7 +14,7 @@ TALLY_ARITHMETIC_OPS = ['+', '-', '*', '/', '^'] class CrossScore(object): """A special-purpose tally score used to encapsulate all combinations of two - tally's scores as a outer product for tally arithmetic. + tally's scores as an outer product for tally arithmetic. Parameters ---------- @@ -270,7 +270,6 @@ class CrossFilter(object): self._left_filter = None self._right_filter = None self._binary_op = None - self._num_bins = 0 if left_filter is not None: self.left_filter = left_filter @@ -281,9 +280,6 @@ class CrossFilter(object): if binary_op is not None: self.binary_op = binary_op - if self.left_filter is not None and self.right_filter is not None: - self._num_bins = left_filter.num_bins * right_filter.num_bins - def __hash__(self): return hash((self.left_filter, self.right_filter)) @@ -337,7 +333,10 @@ class CrossFilter(object): @property def num_bins(self): - return self._num_bins + if self.left_filter is not None and self.right_filter is not None: + return self.left_filter.num_bins * self.right_filter.num_bins + else: + return 0 @property def stride(self): @@ -356,11 +355,13 @@ class CrossFilter(object): def left_filter(self, left_filter): cv.check_type('left_filter', left_filter, (Filter, CrossFilter)) self._left_filter = left_filter + self._bins['left'] = left_filter.bins @right_filter.setter def right_filter(self, right_filter): cv.check_type('right_filter', right_filter, (Filter, CrossFilter)) self._right_filter = right_filter + self._bins['right'] = right_filter.bins @binary_op.setter def binary_op(self, binary_op): diff --git a/openmc/filter.py b/openmc/filter.py index 5dbf83fdd..9735d95bb 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -35,7 +35,7 @@ class Filter(object): ---------- type : str The type of the tally filter. - bins : Integral or Iterable of Integral or Iterable of float + bins : Integral or Iterable of Integral or Iterable of Real The bins for the filter num_bins : Integral The number of filter bins @@ -325,8 +325,8 @@ class Filter(object): elif self.type in ['energy', 'energyout']: return np.all(self.bins == other.bins) - for bin in self.bins: - if bin not in other.bins: + for bin in other.bins: + if bin not in self.bins: return False return True @@ -404,7 +404,7 @@ class Filter(object): The zero-based index into the filter's array of bins. The bin index for 'material', 'surface', 'cell', 'cellborn', and 'universe' filters corresponds to the ID in the filter's list of bins. For - 'distribcell' tallies the bin_index necessarily can only be zero + 'distribcell' tallies the bin index necessarily can only be zero since only one cell can be tracked per tally. The bin index for 'energy' and 'energyout' filters corresponds to the energy range of interest in the filter bins of energies. The bin index for 'mesh' @@ -434,22 +434,28 @@ class Filter(object): if self.type == 'mesh': + # Construct 3-tuple of x,y,z cell indices for a 3D mesh if (len(self.mesh.dimension) == 3): nx, ny, nz = self.mesh.dimension x = bin_index / (ny * nz) y = (bin_index - (x * ny * nz)) / nz z = bin_index - (x * ny * nz) - (y * nz) filter_bin = (x, y, z) + + # Construct 2-tuple of x,y cell indices for a 2D mesh else: nx, ny = self.mesh.dimension x = bin_index / ny y = bin_index - (x * ny) filter_bin = (x, y) + # Construct 2-tuple of lower, upper energies for energy(out) filters elif self.type in ['energy', 'energyout']: filter_bin = (self.bins[bin_index], self.bins[bin_index+1]) + # Construct 1-tuple of with the cell ID for distribcell filters elif self.type == 'distribcell': filter_bin = (self.bins[0],) + # Construct 1-tuple with domain ID (e.g., material) for other filters else: filter_bin = (self.bins[bin_index],) @@ -586,8 +592,8 @@ class Filter(object): openmc_geometry = summary.openmc_geometry # Use OpenCG to compute the number of regions - opencg_geometry.initializeCellOffsets() - num_regions = opencg_geometry._num_regions + opencg_geometry.initialize_cell_offsets() + num_regions = opencg_geometry.num_regions # Initialize a dictionary mapping OpenMC distribcell # offsets to OpenCG LocalCoords linked lists @@ -596,7 +602,7 @@ class Filter(object): # Use OpenCG to compute LocalCoords linked list for # each region and store in dictionary for region in range(num_regions): - coords = opencg_geometry.findRegion(region) + coords = opencg_geometry.find_region(region) path = opencg.get_path(coords) cell_id = path[-1] diff --git a/openmc/mesh.py b/openmc/mesh.py index 7c2a62583..e410c9910 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -151,7 +151,7 @@ class Mesh(object): @name.setter def name(self, name): if name is not None: - check_type('name for mesh ID="{0}"'.format(self._id), + cv.check_type('name for mesh ID="{0}"'.format(self._id), name, basestring) self._name = name else: diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index a989d27e9..9b85e9bfc 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -24,7 +24,7 @@ class EnergyGroups(object): Attributes ---------- - group_edges : NumPy array + group_edges : ndarray The energy group boundaries [MeV] num_groups : Integral The number of energy groups @@ -57,6 +57,20 @@ class EnergyGroups(object): else: return existing + def __eq__(self, other): + if not isinstance(other, EnergyGroups): + return False + elif self.group_edges != other.group_edges: + return False + else: + return True + + def __ne__(self, other): + return not self == other + + def __hash__(self): + return hash(tuple(self.group_edges)) + @property def group_edges(self): return self._group_edges @@ -72,20 +86,6 @@ class EnergyGroups(object): self._group_edges = np.array(edges) self._num_groups = len(edges)-1 - def __eq__(self, other): - if not isinstance(other, EnergyGroups): - return False - elif self.group_edges != other.group_edges: - return False - else: - return True - - def __ne__(self, other): - return not self == other - - def __hash__(self): - return hash(tuple(self.group_edges)) - def generate_bin_edges(self, start, stop, num_groups, spacing='linear'): """Generate equally or logarithmically-spaced energy group boundaries. @@ -97,8 +97,8 @@ class EnergyGroups(object): The highest energy in MeV num_groups : Integral The number of energy groups - spacing : str - The spacing between groups ('linear' or 'logarithmic') + spacing : {'linear', 'logarithmic'} + The spacing between groups """ @@ -107,15 +107,15 @@ class EnergyGroups(object): cv.check_type('number of groups', num_groups, Integral) cv.check_type('spacing', spacing, basestring) cv.check_greater_than('first edge', start, 0, True) - cv.check_greater_than('first edge', stop, start, False) + cv.check_greater_than('last edge', stop, start, False) cv.check_greater_than('number of groups', num_groups, 0) cv.check_value('spacing', spacing, ('linear', 'logarithmic')) if spacing == 'linear': - self.group_edges = np.linspace(start, stop, num_groups+1) + self.group_edges = np.linspace(start, stop, num_groups + 1) elif spacing == 'logarithmic': self.group_edges = \ - np.logspace(np.log10(start), np.log10(stop), num_groups+1) + np.logspace(np.log10(start), np.log10(stop), num_groups + 1) self._num_groups = num_groups @@ -189,7 +189,7 @@ class EnergyGroups(object): Returns ------- ndarray - The NumPy array indices for each energy group of interest + The ndarray array indices for each energy group of interest Raises ------ diff --git a/openmc/statepoint.py b/openmc/statepoint.py index f58994b8c..5f0b5adbd 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -544,7 +544,7 @@ class StatePoint(object): contains_filters = False for test_filter in test_tally.filters: - if filter.is_subset(test_filter): + if test_filter.is_subset(filter): contains_filters = True break From 7bc104b21b8afc043ff7ad1a4afa9c17fbe03a47 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 00:08:16 -0400 Subject: [PATCH 062/130] Simplified EnergyGroups.get_condensed_groups(...) routine --- openmc/mgxs/groups.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 9b85e9bfc..f0adc5101 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -227,11 +227,11 @@ class EnergyGroups(object): ---------- coarse_groups : Iterable of 2-tuple The energy groups of interest - a list of 2-tuples, each directly - corresponding to one of the new coarse groups. The values in the - 2-tuples are upper/lower energy groups used to construct a new - coarse group. For example, if [(1,2), (2,4)] was used as the coarse - groups, fine groups 1 and 2 would be merged into coarse group 1 - while fine groups 3 and 4 would be merged into coarse group 2. + corresponding to one of the new coarse groups. The values in the + 2-tuples are upper/lower energy groups used to construct a new + coarse group. For example, if [(1,2), (2,4)] was used as the coarse + groups, fine groups 1 and 2 would be merged into coarse group 1 + while fine groups 3 and 4 would be merged into coarse group 2. Returns ------- @@ -255,9 +255,7 @@ class EnergyGroups(object): cv.check_less_than('lower group', group[0], group[1], False) # Compute the group indices into the coarse group - group_bounds = list() - for group in coarse_groups: - group_bounds.append(group[0]) + group_bounds = [group[0] for group in coarse_groups] group_bounds.append(coarse_groups[-1][1]) # Determine the indices mapping the fine-to-coarse energy groups From 9c9eb446a103f815bd30a1e0acaa7f679c6a209d Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 00:48:14 -0400 Subject: [PATCH 063/130] Cleaning up docstrings for new tally arithmetic routines in tallies.py --- .../examples/pandas-dataframes.ipynb | 42 +-- .../pythonapi/examples/post-processing.ipynb | 44 +-- .../pythonapi/examples/tally-arithmetic.ipynb | 28 +- openmc/statepoint.py | 26 +- openmc/summary.py | 2 +- openmc/tallies.py | 303 +++++++++++------- 6 files changed, 252 insertions(+), 193 deletions(-) diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 34bb533cd..f84e9ec1a 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -385,7 +385,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAwOjAx\nOjMxLTA0OjAw4140mAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMDowMTozMS0wNDow\nMJIDjCQAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAwOjQ2\nOjE5LTA0OjAwwJEVeQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMDo0NjoxOS0wNDow\nMLHMrcUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -575,7 +575,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 00:01:31\n", + " Date/Time: 2015-10-03 00:46:19\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -643,20 +643,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.9000E-01 seconds\n", - " Reading cross sections = 1.2900E-01 seconds\n", - " Total time in simulation = 1.4684E+01 seconds\n", - " Time in transport only = 1.4653E+01 seconds\n", - " Time in inactive batches = 1.7680E+00 seconds\n", - " Time in active batches = 1.2916E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Total time for initialization = 3.9600E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 1.2458E+01 seconds\n", + " Time in transport only = 1.2445E+01 seconds\n", + " Time in inactive batches = 1.2760E+00 seconds\n", + " Time in active batches = 1.1182E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 2.0000E-03 seconds\n", - " Time accumulating tallies = 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 = 0.0000E+00 seconds\n", - " Total time elapsed = 1.5286E+01 seconds\n", - " Calculation Rate (inactive) = 7070.14 neutrons/second\n", - " Calculation Rate (active) = 2903.38 neutrons/second\n", + " Total time elapsed = 1.2865E+01 seconds\n", + " Calculation Rate (inactive) = 9796.24 neutrons/second\n", + " Calculation Rate (active) = 3353.60 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1086,7 +1086,7 @@ "data": { "image/png": "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\nBPCvjMC6bD6xSh4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1109,7 +1109,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1120,7 +1120,7 @@ "data": { "image/png": "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\nefX/AdmeWI23zkQnAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2325,7 +2325,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 38, @@ -2336,7 +2336,7 @@ "data": { "image/png": "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\norlkyRKeP3+erVp1IWCgqI78DIFVDAuLossVo41pQ4rqwy2ZmHgjbbYuFKvqVlBVI1i3bnMajRMo\nZofbaLNF+F0sBAtI4yGNR2kSSvozMzO5Zs0aLlmyxFtp9Vr1d+p0K4HV9ATQgXrU6XoQeJ6KUpuT\nJz9T+EEoTugNG7amw5FIp7Mbw8NjvUUbe/S4g6Jib87VvO+Vty8e/WFh0QS20RPstdsT+eGHH+bZ\nfvPmzbTbI+l01qfVGsYFCxbx6aefZnh4RZrN5Vi/fjMeOnTIu/2MGTNoMPhWEn6Fwp1zG1W1OgcO\nHMLGjdvSZqtB4f6qR1Ep+B1GR1fzHmfQoH9RBNQ9x9nJ6OjqHDz4Ier1U7TnXtBmEdna1buFgIF3\n331/ntldcnIyq1evR5OpEnW6kVTVBD722JMFjvfp06dpt0dSuKNI4FM6nVH866+/Cv1fpaamagH5\ntfQ013I6b+XUqVO928yf/xLNZjtVNZ7h4bHctWuX9n/0XTDxGZs06cixY59gtWpN2Lx5F37zzTdM\nSUlhixadaTCYGB5eievWrStUUyCANB6hbTwkocWQIcNpNI7TTgbrKPzkHjdOCo1Ga5FWy0yfPkOr\ntOqpwjuPN97YgyS5ePF/tF7tRyiqurbnlCkFNzM6cuQIq1Spr13lhtFqrcpu3frmWVKbkZGhXUF7\nakMdpF7vok7XjqKrYWMCbVmhQrw3nrN//35tietSAl9RUdry3nvv56pVq7h161a63W5mZmZy8uTJ\ntFq7Myf/xU293uTN5J816wXabN00N46bJtNY3nrrXdoJdixFwPlhiuCzZzx3sly52AI/d3Z2Nleu\nXMlp06YV2nHw66+/ptOZ6HMiJ53O+oW23RVFJQdTLCvvps3Q3qaiVMxTBTctLY0HDx70xnPuvXeY\nj2EkdboF7Nbt9qu+V0kCaTyk8ZCUHCdOnGB0dDXa7T1osTQh0NXnhJRJo9FapFav9933EP0bS33P\nuLi6JMVJZOLEKbTZXLRY7HzwwVFXNUgJCU1pMEzTTtxfetu65ubo0aNUlGif9/yGQGXm5FecI+Ck\n3d6aGzdu9O63fft2tmnTnbVrt+SkSc/kuxJo69atVNUqFKu1xFV2eHis94R45coVdu9+G222GNrt\nNVizZmOePHmSnTr1pEgMbEaxuEClwdCLOt0TVJQYLl/+Zp73uh6OHDmi9WPxFMg8SoslLE/9sNx8\n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\nRCKRSCSB5/8ByMyfADZGvh4AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2363,7 +2363,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -2374,7 +2374,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index cea483f9d..b9bc809df 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -353,7 +353,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDJUMjM6NTE6MTQtMDQ6MDBw2InyAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAy\nVDIzOjUxOjE0LTA0OjAwAYUxTgAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDA6Mjg6MjUtMDQ6MDB/woIeAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAwOjI4OjI1LTA0OjAwDp86ogAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -465,7 +465,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-02 23:51:14\n", + " Date/Time: 2015-10-03 00:28:25\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -601,20 +601,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7400E-01 seconds\n", - " Reading cross sections = 1.3400E-01 seconds\n", - " Total time in simulation = 3.5996E+02 seconds\n", - " Time in transport only = 3.5984E+02 seconds\n", - " Time in inactive batches = 1.0821E+01 seconds\n", - " Time in active batches = 3.4914E+02 seconds\n", - " Time synchronizing fission bank = 1.5000E-02 seconds\n", - " Sampling source sites = 7.0000E-03 seconds\n", - " SEND/RECV source sites = 8.0000E-03 seconds\n", - " Time accumulating tallies = 3.4000E-02 seconds\n", - " Total time for finalization = 2.5500E-01 seconds\n", - " Total time elapsed = 3.6081E+02 seconds\n", - " Calculation Rate (inactive) = 4620.64 neutrons/second\n", - " Calculation Rate (active) = 1288.87 neutrons/second\n", + " Total time for initialization = 3.9300E-01 seconds\n", + " Reading cross sections = 8.4000E-02 seconds\n", + " Total time in simulation = 2.4111E+02 seconds\n", + " Time in transport only = 2.4106E+02 seconds\n", + " Time in inactive batches = 8.4970E+00 seconds\n", + " Time in active batches = 2.3262E+02 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 5.0000E-03 seconds\n", + " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Time accumulating tallies = 3.1000E-02 seconds\n", + " Total time for finalization = 1.6600E-01 seconds\n", + " Total time elapsed = 2.4169E+02 seconds\n", + " Calculation Rate (inactive) = 5884.43 neutrons/second\n", + " Calculation Rate (active) = 1934.51 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -871,7 +871,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -882,7 +882,7 @@ "data": { "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -914,7 +914,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1028,7 +1028,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1039,7 +1039,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1090,7 +1090,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 9460b8c32..ca8b84245 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -369,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDJUMjM6NDg6NTQtMDQ6MDDJCXMCAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAy\nVDIzOjQ4OjU0LTA0OjAwuFTLvgAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDA6MjQ6NTQtMDQ6MDDJTGA9AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAwOjI0OjU0LTA0OjAwuBHYgQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -580,7 +580,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-02 23:48:55\n", + " Date/Time: 2015-10-03 00:24:54\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -636,20 +636,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 5.7300E-01 seconds\n", - " Reading cross sections = 1.2700E-01 seconds\n", - " Total time in simulation = 2.1409E+01 seconds\n", - " Time in transport only = 2.1383E+01 seconds\n", - " Time in inactive batches = 2.7630E+00 seconds\n", - " Time in active batches = 1.8646E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 7.0100E-01 seconds\n", + " Reading cross sections = 1.5800E-01 seconds\n", + " Total time in simulation = 2.0485E+01 seconds\n", + " Time in transport only = 2.0465E+01 seconds\n", + " Time in inactive batches = 3.0920E+00 seconds\n", + " Time in active batches = 1.7393E+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", " Time accumulating tallies = 0.0000E+00 seconds\n", " Total time for finalization = 1.0000E-03 seconds\n", - " Total time elapsed = 2.1994E+01 seconds\n", - " Calculation Rate (inactive) = 4524.07 neutrons/second\n", - " Calculation Rate (active) = 2011.16 neutrons/second\n", + " Total time elapsed = 2.1200E+01 seconds\n", + " Calculation Rate (inactive) = 4042.69 neutrons/second\n", + " Calculation Rate (active) = 2156.04 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 5f0b5adbd..55abf010a 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -33,42 +33,42 @@ class StatePoint(object): each batch cmfd_src : ndarray CMFD fission source distribution over all mesh cells and energy groups. - current_batch : int + current_batch : Integral Number of batches simulated date_and_time : str Date and time when simulation began entropy : ndarray Shannon entropy of fission source at each batch - gen_per_batch : int + gen_per_batch : Integral Number of fission generations per batch global_tallies : ndarray of compound datatype Global tallies for k-effective estimates and leakage. The compound datatype has fields 'name', 'sum', 'sum_sq', 'mean', and 'std_dev'. k_combined : list Combined estimator for k-effective and its uncertainty - k_col_abs : float + k_col_abs : Real Cross-product of collision and absorption estimates of k-effective - k_col_tra : float + k_col_tra : Real Cross-product of collision and tracklength estimates of k-effective - k_abs_tra : float + k_abs_tra : Real Cross-product of absorption and tracklength estimates of k-effective k_generation : ndarray Estimate of k-effective for each batch/generation meshes : dict Dictionary whose keys are mesh IDs and whose values are Mesh objects - n_batches : int + n_batches : Integral Number of batches - n_inactive : int + n_inactive : Integral Number of inactive batches - n_particles : int + n_particles : Integral Number of particles per generation - n_realizations : int + n_realizations : Integral Number of tally realizations path : str Working directory for simulation run_mode : str Simulation run mode, e.g. 'k-eigenvalue' - seed : int + seed : Integral Pseudorandom number generator seed source : ndarray of compound datatype Array of source sites. The compound datatype has fields 'wgt', 'xyz', @@ -80,7 +80,7 @@ class StatePoint(object): Dictionary whose keys are tally IDs and whose values are Tally objects tallies_present : bool Indicate whether user-defined tallies are present - version: tuple of int + version: tuple of Integral Version of OpenMC summary : None or openmc.summary.Summary A summary object if the statepoint has been linked with a summary file @@ -487,7 +487,7 @@ class StatePoint(object): A list of Nuclide objects (default is []). name : str, optional The name specified for the Tally (default is None). - id : int, optional + id : Integral, optional The id specified for the Tally (default is None). estimator: str, optional The type of estimator ('tracklength', 'analog'; default is None). @@ -543,6 +543,8 @@ class StatePoint(object): for filter in filters: contains_filters = False + # Test if requested filter is a subset of any of the test + # tally's filters and if so continue to next filter for test_filter in test_tally.filters: if test_filter.is_subset(filter): contains_filters = True diff --git a/openmc/summary.py b/openmc/summary.py index 35aa703f5..f572b48ef 100644 --- a/openmc/summary.py +++ b/openmc/summary.py @@ -82,7 +82,7 @@ class Summary(object): # Create the Material material = openmc.Material(material_id=material_id, name=name) - # Set the Material's density to g/cm3 - this is what is used in OpenMC + # Set the Material's density to atom/b-cm as used by OpenMC material.set_density(density=density, units='atom/b-cm') # Add all nuclides to the Material diff --git a/openmc/tallies.py b/openmc/tallies.py index 5ea0aa8ea..50afe6072 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -34,7 +34,7 @@ class Tally(object): Parameters ---------- - tally_id : int, optional + tally_id : Integral, optional Unique identifier for the tally. If none is specified, an identifier will automatically be assigned name : str, optional @@ -42,7 +42,7 @@ class Tally(object): Attributes ---------- - id : int + id : Integral Unique identifier for the tally name : str Name of the tally @@ -56,17 +56,17 @@ class Tally(object): Type of estimator for the tally triggers : list of openmc.trigger.Trigger List of tally triggers - num_score_bins : int + num_score_bins : Integral Total number of scores, accounting for the fact that a single user-specified score, e.g. scatter-P3 or flux-Y2,2, might have multiple bins - num_scores : int + num_scores : Integral Total number of user-specified scores - num_filter_bins : int + num_filter_bins : Integral Total number of filter bins accounting for all filters - num_bins : int + num_bins : Integral Total number of bins for the tally - num_realizations : int + num_realizations : Integral Total number of realizations with_summary : bool Whether or not a Summary has been linked @@ -743,7 +743,7 @@ class Tally(object): filter_type : str The type of Filter (e.g., 'cell', 'energy', etc.) - filter_bin : int, tuple + filter_bin : Integral or tuple The bin is an integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. The bin is an integer for the cell instance ID for 'distribcell' Filters. The bin is a 2-tuple of @@ -842,11 +842,36 @@ class Tally(object): return score_index def get_filter_indices(self, filters=[], filter_bins=[]): - """ + """Get indices into the filter axis of this tally's data arrays. + + This is a helper routine for the Tally.get_values(...) routine to + extract tally data. This routine returns the indices into the filter + axis of the tally's data array (axis=0) for particular combinations + of filters and their corresponding bins. + + Parameters + ---------- + filters : list of str + A list of filter type strings + (e.g., ['mesh', 'energy']; default is []) + + filter_bins : list of Iterables + A list of the filter bins corresponding to the filter_types + parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin + in the list is the integer ID for 'material', 'surface', 'cell', + 'cellborn', and 'universe' Filters. Each bin is an integer for the + cell instance ID for 'distribcell' Filters. Each bin is a 2-tuple of + floats for 'energy' and 'energyout' filters corresponding to the + energy boundaries of the bin of interest. The bin is a (x,y,z) + 3-tuple for 'mesh' filters corresponding to the mesh cell of + interest. The order of the bins in the list must correspond to the + filter_types parameter. + + Returns + ------- + ndarray + A NumPy array of the filter indices - :param filters: - :param filter_bins: - :return: """ cv.check_iterable_type('filters', filters, basestring) @@ -882,10 +907,11 @@ class Tally(object): for k in range(filter.num_bins): bins.append((filter.bins[k], filter.bins[k+1])) + # Create list of cell instance IDs for distribcell Filters elif filter.type == 'distribcell': bins = np.arange(filter.num_bins) - # Create list of IDs for bins for all other Filter types + # Create list of IDs for bins for all other filter types else: bins = filter.bins @@ -911,10 +937,23 @@ class Tally(object): return filter_indices def get_nuclide_indices(self, nuclides): - """ + """Get indices into the nuclide axis of this tally's data arrays. + + This is a helper routine for the Tally.get_values(...) routine to + extract tally data. This routine returns the indices into the nuclide + axis of the tally's data array (axis=1) for one or more nuclides. + + Parameters + ---------- + nuclides : list of str + A list of nuclide name strings + (e.g., ['U-235', 'U-238']; default is []) + + Returns + ------- + ndarray + A NumPy array of the nuclide indices - :param nuclides: - :return: """ cv.check_iterable_type('nuclides', nuclides, basestring) @@ -932,10 +971,23 @@ class Tally(object): return nuclide_indices def get_score_indices(self, scores): - """ + """Get indices into the score axis of this tally's data arrays. + + This is a helper routine for the Tally.get_values(...) routine to + extract tally data. This routine returns the indices into the score + axis of the tally's data array (axis=2) for one or more scores. + + Parameters + ---------- + scores : list of str + A list of one or more score strings + (e.g., ['absorption', 'nu-fission']; default is []) + + Returns + ------- + ndarray + A NumPy array of the score indices - :param scores: - :return: """ cv.check_iterable_type('scores', scores, basestring) @@ -954,19 +1006,20 @@ class Tally(object): def get_values(self, scores=[], filters=[], filter_bins=[], nuclides=[], value='mean'): - """Returns a tally score value given a list of filters to satisfy. + """Returns one or more tallied values given a list of scores, filters, + filter bins and nuclides. This method constructs a 3D NumPy array for the requested Tally data indexed by filter bin, nuclide bin, and score index. The method will - order the data in the array as specified in the parameter lists + order the data in the array as specified in the parameter lists. Parameters ---------- - scores : list + scores : list of str A list of one or more score strings (e.g., ['absorption', 'nu-fission']; default is []) - filters : list + filters : list of str A list of filter type strings (e.g., ['mesh', 'energy']; default is []) @@ -982,7 +1035,7 @@ class Tally(object): interest. The order of the bins in the list must correspond to the filter_types parameter. - nuclides : list + nuclides : list of str A list of nuclide name strings (e.g., ['U-235', 'U-238']; default is []) @@ -1121,7 +1174,7 @@ class Tally(object): # Build DataFrame columns for filters if user requested them if filters: - # Append each Filter's DataFRame to the overall DataFrame + # Append each Filter's DataFrame to the overall DataFrame for filter in self.filters: filter_df = filter.get_pandas_dataframe(data_size, summary) @@ -1192,7 +1245,7 @@ class Tally(object): suppose this tally has arrays of data with shape (8,5,5) corresponding to two filters (2 and 4 bins, respectively), five nuclides and five scores. This routine will return a version of the data array with the - with a new shape of (2,4,5,5) such that the first two dimensions now + with a new shape of (2,4,5,5) such that the first two dimensions correspond directly to the two filters with two and four bins. Parameters @@ -1203,9 +1256,8 @@ class Tally(object): Returns ------- - float or ndarray - A scalar or NumPy array of the Tally data indexed in the order - each filter, nuclide and score is listed in the parameters. + ndarray + The tally data array indexed by filters, nuclides and scores. """ @@ -1388,7 +1440,7 @@ class Tally(object): Returns ------- Tally - A new Tally outer that is the outer product with this one. + A new Tally that is the outer product with this one. Raises ------ @@ -1408,15 +1460,17 @@ class Tally(object): new_tally.with_batch_statistics = True new_tally._derived = True + # Construct a combined derived name from the two tally operands if self.name != '' and other.name != '': new_name = '({0} {1} {2})'.format(self.name, binary_op, other.name) new_tally.name = new_name - # FIXME: Align filters + # Find any shared filters between the two tallies self_filters = set(self.filters) other_filters = set(other.filters) filter_intersect = self_filters.intersection(other_filters) + # Align the shared filters to follow in each tally operand for i, filter in enumerate(filter_intersect): self_index = self.filters.index(filter) other_filter = other.filters[self_index] @@ -1461,12 +1515,15 @@ class Tally(object): if self.num_realizations == other.num_realizations: new_tally.num_realizations = self.num_realizations - # Generate filter "outer products" + # If filters are identical, simply reuse them in derived tally if self.filters == other.filters: for self_filter in self.filters: new_tally.add_filter(self_filter) + + # Generate filter "outer products" for non-identical filters else: + # Find the common longest sequence of shared filters match = 0 for self_filter, other_filter in zip(self.filters, other.filters): if self_filter == other_filter: @@ -1477,11 +1534,11 @@ class Tally(object): match_filters = self.filters[:match] cross_filters = [self.filters[match:], other.filters[match:]] - # FIXME: This must be the common longest sequence of tallies at the beginning - + # Simply reuse shared filters in derived tally for filter in match_filters: new_tally.add_filter(filter) + # Use cross filters to combine non-shared filters in derived tally if len(self.filters) != match and len(other.filters) == match: for filter in cross_filters[0]: new_tally.add_filter(filter) @@ -1523,94 +1580,6 @@ class Tally(object): return new_tally - def swap_filters(self, filter1, filter2): - """ - - :param filter1: - :param filter2: - :return: - """ - - # Check that results have been read - if not self.derived and self.sum is None: - msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ - 'since it does not contain any results.'.format(self.id) - raise ValueError(msg) - - cv.check_type('filter1', filter1, Filter) - cv.check_type('filter2', filter2, Filter) - - if filter1 == filter2: - msg = 'Unable to swap a filter with itself' - raise ValueError(msg) - elif filter1 not in self.filters: - msg = 'Unable to swap "{0}" filter1 in Tally ID="{1}" since it ' \ - 'does not contain such a filter'.format(filter1.type, self.id) - raise ValueError(msg) - elif filter2 not in self.filters: - msg = 'Unable to swap "{0}" filter2 in Tally ID="{1}" since it ' \ - 'does not contain such a filter'.format(filter2.type, self.id) - raise ValueError(msg) - - swap_tally = copy.deepcopy(self) - - # Swap the filters in the copied version of this Tally - filter1_index = swap_tally.filters.index(filter1) - filter2_index = swap_tally.filters.index(filter2) - swap_tally.filters[filter1_index] = filter2 - swap_tally.filters[filter2_index] = filter1 - - # Update the strides for each of the filters - stride = swap_tally.num_nuclides * swap_tally.num_score_bins - for filter in reversed(swap_tally.filters): - filter.stride = stride - stride *= filter.num_bins - - filters = [filter1.type, filter2.type] - if filter1.type == 'distribcell': - filter1_bins = np.arange(filter.num_bins) - else: - filter1_bins = [(filter1.get_bin(i)) for i in range(filter1.num_bins)] - - if filter1.type == 'distribcell': - filter2_bins = np.arange(filter2.num_bins) - else: - filter2_bins = [filter2.get_bin(i) for i in range(filter2.num_bins)] - - if self.sum is not None: - for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(bin1,), (bin2,)] - data = self.get_values(filters=filters, - filter_bins=filter_bins, value='sum') - indices = swap_tally.get_filter_indices(filters, filter_bins) - swap_tally.sum[indices, :, :] = data - - if self.sum_sq is not None: - for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(bin1,), (bin2,)] - data = self.get_values(filters=filters, - filter_bins=filter_bins, value='sum_sq') - indices = swap_tally.get_filter_indices(filters, filter_bins) - swap_tally.sum_sq[indices, :, :] = data - - if self.sum is not None: - for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(bin1,), (bin2,)] - data = self.get_values(filters=filters, - filter_bins=filter_bins, value='mean') - indices = swap_tally.get_filter_indices(filters, filter_bins) - swap_tally._mean[indices, :, :] = data - - if self.sum is not None: - for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): - filter_bins = [(bin1,), (bin2,)] - data = self.get_values(filters=filters, - filter_bins=filter_bins, value='std_dev') - indices = swap_tally.get_filter_indices(filters, filter_bins) - swap_tally._std_dev[indices, :, :] = data - - return swap_tally - def _align_tally_data(self, other): """Aligns data from two tallies for tally arithmetic. @@ -1727,6 +1696,94 @@ class Tally(object): data['other']['std. dev.'] = other_std_dev return data + def swap_filters(self, filter1, filter2): + """ + + :param filter1: + :param filter2: + :return: + """ + + # Check that results have been read + if not self.derived and self.sum is None: + msg = 'Unable to use tally arithmetic with Tally ID="{0}" ' \ + 'since it does not contain any results.'.format(self.id) + raise ValueError(msg) + + cv.check_type('filter1', filter1, Filter) + cv.check_type('filter2', filter2, Filter) + + if filter1 == filter2: + msg = 'Unable to swap a filter with itself' + raise ValueError(msg) + elif filter1 not in self.filters: + msg = 'Unable to swap "{0}" filter1 in Tally ID="{1}" since it ' \ + 'does not contain such a filter'.format(filter1.type, self.id) + raise ValueError(msg) + elif filter2 not in self.filters: + msg = 'Unable to swap "{0}" filter2 in Tally ID="{1}" since it ' \ + 'does not contain such a filter'.format(filter2.type, self.id) + raise ValueError(msg) + + swap_tally = copy.deepcopy(self) + + # Swap the filters in the copied version of this Tally + filter1_index = swap_tally.filters.index(filter1) + filter2_index = swap_tally.filters.index(filter2) + swap_tally.filters[filter1_index] = filter2 + swap_tally.filters[filter2_index] = filter1 + + # Update the strides for each of the filters + stride = swap_tally.num_nuclides * swap_tally.num_score_bins + for filter in reversed(swap_tally.filters): + filter.stride = stride + stride *= filter.num_bins + + filters = [filter1.type, filter2.type] + if filter1.type == 'distribcell': + filter1_bins = np.arange(filter.num_bins) + else: + filter1_bins = [(filter1.get_bin(i)) for i in range(filter1.num_bins)] + + if filter1.type == 'distribcell': + filter2_bins = np.arange(filter2.num_bins) + else: + filter2_bins = [filter2.get_bin(i) for i in range(filter2.num_bins)] + + if self.sum is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(bin1,), (bin2,)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='sum') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally.sum[indices, :, :] = data + + if self.sum_sq is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(bin1,), (bin2,)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='sum_sq') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally.sum_sq[indices, :, :] = data + + if self.sum is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(bin1,), (bin2,)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='mean') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally._mean[indices, :, :] = data + + if self.sum is not None: + for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): + filter_bins = [(bin1,), (bin2,)] + data = self.get_values(filters=filters, + filter_bins=filter_bins, value='std_dev') + indices = swap_tally.get_filter_indices(filters, filter_bins) + swap_tally._std_dev[indices, :, :] = data + + return swap_tally + def __add__(self, other): """Adds this tally to another tally or scalar value. @@ -2422,7 +2479,7 @@ class Tally(object): Returns ------- Tally - A new Tally outer that is the outer product with this one. + A new Tally that is the outer product with this one. """ From 0eee99ee203f724007a1f96ccf4a62044ae33a12 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 01:04:42 -0400 Subject: [PATCH 064/130] Added docstring for Tally.swap_filter(...) routine --- docs/source/pythonapi/examples/geometry.xml | 38 + .../pythonapi/examples/materials-xy.png | Bin 0 -> 1271 bytes docs/source/pythonapi/examples/materials.xml | 20 + docs/source/pythonapi/examples/plots.xml | 8 + .../pythonapi/examples/post-processing.ipynb | 44 +- docs/source/pythonapi/examples/settings.xml | 21 + docs/source/pythonapi/examples/tallies.xml | 23 + .../pythonapi/examples/tally-arithmetic.ipynb | 665 ++---------------- openmc/tallies.py | 62 +- 9 files changed, 230 insertions(+), 651 deletions(-) create mode 100644 docs/source/pythonapi/examples/geometry.xml create mode 100644 docs/source/pythonapi/examples/materials-xy.png create mode 100644 docs/source/pythonapi/examples/materials.xml create mode 100644 docs/source/pythonapi/examples/plots.xml create mode 100644 docs/source/pythonapi/examples/settings.xml create mode 100644 docs/source/pythonapi/examples/tallies.xml diff --git a/docs/source/pythonapi/examples/geometry.xml b/docs/source/pythonapi/examples/geometry.xml new file mode 100644 index 000000000..8e9f1ef3d --- /dev/null +++ b/docs/source/pythonapi/examples/geometry.xml @@ -0,0 +1,38 @@ + + + + + + + + 1.26 1.26 + 17 17 + -10.71 -10.71 + +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 +10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 + + + + + + + + + + diff --git a/docs/source/pythonapi/examples/materials-xy.png b/docs/source/pythonapi/examples/materials-xy.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c31899516ea2a3f585861e65394dfd9bb9ba56 GIT binary patch literal 1271 zcmZ{jeN>Wn6vrPkJ7<=2={b=rqn489Of1U{1V#q}n*te4O4EEPU#Fg=BWn66nP%lQ z%d*gHT2}KUW3DVJX}+YDNot18hAAswP|-jI8;Sf3UDR*%Wz7LnSW-JU%%UB(!SR4hvzM^s*rhoir@GmO$*Ml{ z&2`TtWgqezYj0L}E4GHFu?t`QejA+>(5Q&uhIWHIyU;(Fv!AA#GLhebv>9u3daQKG zb9~sF+RY9j@Y8EF_x?+z;(~_UKFjm?-8HYC2%~MMR^QDrIg-^SYDCb<2Ncs)RkL3O zSQBH`WvP_us5ZgX?*ZVP4RiJYrJRJwLy_^-!wOwca=T{Hd+vlWUX;*VhSpV|3tN>c z1@Zp#CNIfpF6gtU_(P|11LhRd==}?5ou(ksykgT8G^$_5Aq3|H ze*F-nHFES8d=?7ni>Wa39jG)|im0GP zhkr4T?;hd)Eixdh%&7fQV05(Lj)G+m!Hz*i3wmmb*7|QQ;w1#0Hvnf44t`I7psfr3V?_BvpDY{UPKXSagSMB!Vr3NxNozK# zY>d*zxPS*V#}2r?QjxEOYetk&%BudEQKTRT4Uv~zL^IRP(g8T;FPd0K`*~g(`RT+0 zJc_iez7JOR!!hcr!g0mXT0j`G;O@ew)$mVbxXB6*EyLfXuIR?T-BrjG2%{r}2T4(f z4`KpsCVFr6^d@=|xA2MHB;pp54>tRdh{W^7w4(n2KPE@V9ZLUyV5FzO8v`JJCWleK H{ebu%i<^#J literal 0 HcmV?d00001 diff --git a/docs/source/pythonapi/examples/materials.xml b/docs/source/pythonapi/examples/materials.xml new file mode 100644 index 000000000..42c2e5029 --- /dev/null +++ b/docs/source/pythonapi/examples/materials.xml @@ -0,0 +1,20 @@ + + + 71c + + + + + + + + + + + + + + + + + diff --git a/docs/source/pythonapi/examples/plots.xml b/docs/source/pythonapi/examples/plots.xml new file mode 100644 index 000000000..512070a33 --- /dev/null +++ b/docs/source/pythonapi/examples/plots.xml @@ -0,0 +1,8 @@ + + + + 0 0 0 + 21.5 21.5 + 250 250 + + diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index b9bc809df..7c1269c67 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -353,7 +353,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDA6Mjg6MjUtMDQ6MDB/woIeAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAwOjI4OjI1LTA0OjAwDp86ogAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDA6NTg6MTItMDQ6MDAd0a7wAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAwOjU4OjEyLTA0OjAwbIwWTAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -465,7 +465,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 00:28:25\n", + " Date/Time: 2015-10-03 00:58:12\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -601,20 +601,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9300E-01 seconds\n", - " Reading cross sections = 8.4000E-02 seconds\n", - " Total time in simulation = 2.4111E+02 seconds\n", - " Time in transport only = 2.4106E+02 seconds\n", - " Time in inactive batches = 8.4970E+00 seconds\n", - " Time in active batches = 2.3262E+02 seconds\n", - " Time synchronizing fission bank = 7.0000E-03 seconds\n", - " Sampling source sites = 5.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 3.1000E-02 seconds\n", - " Total time for finalization = 1.6600E-01 seconds\n", - " Total time elapsed = 2.4169E+02 seconds\n", - " Calculation Rate (inactive) = 5884.43 neutrons/second\n", - " Calculation Rate (active) = 1934.51 neutrons/second\n", + " Total time for initialization = 3.9800E-01 seconds\n", + " Reading cross sections = 9.2000E-02 seconds\n", + " Total time in simulation = 2.4145E+02 seconds\n", + " Time in transport only = 2.4139E+02 seconds\n", + " Time in inactive batches = 7.6900E+00 seconds\n", + " Time in active batches = 2.3376E+02 seconds\n", + " Time synchronizing fission bank = 1.2000E-02 seconds\n", + " Sampling source sites = 8.0000E-03 seconds\n", + " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Time accumulating tallies = 3.4000E-02 seconds\n", + " Total time for finalization = 1.7000E-01 seconds\n", + " Total time elapsed = 2.4203E+02 seconds\n", + " Calculation Rate (inactive) = 6501.95 neutrons/second\n", + " Calculation Rate (active) = 1925.07 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -871,7 +871,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -882,7 +882,7 @@ "data": { "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -914,7 +914,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEACAYAAACznAEdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFPNJREFUeJzt3XuMHVd9wPHvxhsXAl7sbYrjRyIbx65xHyJIMaiFMrTB\nNWnwuiA5Rmq1gKmqWg3pk9hBrbeqKE4qCq1QKrU8ukTYrQut5VTU2EkzfUitXSAOSZatH22ADXhD\ncIi3hRYbb/84Z72zd+/uzt29M/fu7PcjXd25M2dmzvHcvT+fc+bMAUmSJEmSJEmSJEmSJEmSJKkp\n7gaeAJ6MywDdwHHgNHAMWJpJvxc4AwwCW8rLpiSpSD9KCAYvAhYRgsA64H7gvTHNPcD+uLwJOAVc\nC6wBzgLXlJddSdJszfRjvRE4Afwv8H3gH4G3AduA/pimH9gel3uAg8Al4GlCQNjc1BxLkgoxU0B4\nEng9oYnoOuB2YDWwHBiOaYbjZ4CVwFBm/yFgVbMyK0kqTucM2weB+wj9BP9DaA76fk2a0fiaynTb\nJEltYqaAAPDx+AJ4P+F//cPADcB5YAXwbNz+DHBjZt/Vcd0E69atGz137twssyxJC9Y54OaiDp6n\nw/fl8f0m4K3AAeAI0BvX9wKH4/IRYCewGFgLrAdO1h7w3LlzjI6OVva1b9++lufB8lm+hVa2hVA+\nwk09hclTQ/g08IOEjuLdwAuEu4oOAbsIncc7YtqBuH4AuBzT22QkSfNAnoDwU3XWXQBumyL9H8SX\nJGkecYxAAZIkaXUWCmX55q8qlw2qX76idbTovKOxPUySlFNHRwcU+LttDUGSBBgQJEmRAUGSBBgQ\nJEmRAUGSBBgQJEmRAUGSBBgQJEmRAUGSBBgQJEmRAUGSBBgQJEmRAUGSBBgQJElRnoCwF3gKeIIw\nfeYPAN3AceA0cAxYWpP+DDAIbGlmZtV+urq66ejomPTq6upuddYkNWim52qvAf4BeCXwf8BfAZ8F\nfgR4DrgfuAdYBuwBNhGCxq3AKuBhYANwpea4zodQEeH57PWuZQf1rnFXVzcjI89PWr9kyTIuXrzQ\n/AxKFdLq+RAuEuZSvo4w3eZ1wNeBbUB/TNMPbI/LPcDBuM/TwFlgc1NzrHktBIPRSa96QUJSuWYK\nCBeADwJfJQSCbxOaipYDwzHNcPwMsBIYyuw/RKgpSJLaXOcM29cBv0ZoOnoB+GvgF2rSjP03byp1\nt/X19V1dTpLEuVAlqUaapqRpWtr5ZmqLuhN4E/Du+PkXgdcCPw28ETgPrAAeBTYS+hEA9sf3o8A+\n4ETNce1DqIhG+xAaTS9pXKv7EAYJAeDFMRO3AQPAQ0BvTNMLHI7LR4CdwGJgLbAeONncLGt+6Kx7\n95Gk9jVTk9HjwCeBzxPuFPoi8GfAEuAQsIvQebwjph+I6weAy8Bupm9OUmVdZqqagKT21Kq/TpuM\nKmK6JqBG1/udkKbX6iYjSdICYUCQJAEGBElSZECQJAEGBElSZECQJAEGBDWg3qOuJVWH4xCUW/0x\nB45DkMriOARJUikMCJIkwICgtlH/YXhOxSmVxz4E5VZ0H4J9C9L07EOQJJXCgCBJAgwIkqTIgCBJ\nAvIFhB8GHsu8XgDeA3QDx4HTwDFgaWafvcAZwhScW5qYX0lSQRrtrb4GeAbYDNwFPAfcD9wDLAP2\nAJuAA8CtwCrgYWADYQrOMd5lNA95l5HUWu12l9FtwFnga8A2oD+u7we2x+Ue4CBwiTDf8llCAJEk\ntbFGA8JOwo89wHJgOC4Px88AK4GhzD5DhJqCJKmNdTaQdjHwFkLzUK1R6tf3s9sn6Ovru7qcJAlJ\nkjSQFUmqvjRNSdO0tPM10hbVA/wKsDV+HgQS4DywAngU2EjoRwDYH9+PAvuAE5lj2YcwD9mHILVW\nO/UhvJ3x5iKAI0BvXO4FDmfW7yTUKNYC64GTc8umFq7Jzzjy+UZSMfJGmpcAXyH8wI/Edd3AIeAm\nQufxDuDbcdu9wLuAy8DdwOdqjmcNYR5qVQ2h3jn9/mghKrqG4MPtlJsBQWqtdmoykiRVmAFBkgQY\nECRJkQFBk3R1ddedvUxStdmprEnqdx7DVB28dipL5bBTWZJUCgOCJAkwIEiSIgOCJAkwIEiSIgOC\nJAkwIEiSIgOCJAkwIEiSIgOCJAkwIGhemjyLmjOpSXOXNyAsBT4NfBkYAF5DmDHtOHAaOBbTjNkL\nnCHMu7ylWZmVgsuE5xtNfI2MPN/SXEnzXd6A8MfAZ4FXAj9O+KHfQwgIG4BH4meATcCd8X0r8EAD\n55EktUieH+qXAa8HPh4/XwZeALYB/XFdP7A9LvcAB4FLhLmWzwKbm5NdSVJR8gSEtcA3gU8AXwT+\nHHgJsBwYjmmG42eAlcBQZv8hYFUzMitJKk5nzjSvBn4V+Hfgw4w3D40Za8idyqRtfX19V5eTJCFJ\nkhxZkaSFI01T0jQt7Xx5Jlq4AfhXQk0B4HWETuNXAG8EzgMrgEeBjYwHi/3x/SiwDziROaYT5LSx\n+TBBzlRp/V6pytphgpzzwNcInccAtwFPAQ8BvXFdL3A4Lh8BdgKLCUFkPXCySfmVJBUkT5MRwF3A\npwg/8ueAdwKLgEPALkLn8Y6YdiCuHyB0QO9m+uYkSVIbcE5lTWKTkdSe2qHJSJK0ABgQFrCuru66\nj4CQtDDZZLSANdY0NNV6m4yksthkJEkqhQFBkgQYECRJkQFBkgQYECRJkQFBkgQYECRJkQFBkgQY\nECRJkQFBkgQYECRJkQFBkgTkDwhPA18CHmN89rNu4DhwGjgGLM2k3wucAQaBLc3IqCSpWHkDwiiQ\nALcAm+O6PYSAsAF4hPG5lDcBd8b3rcADDZxHktQijfxQ1z5ydRvQH5f7ge1xuQc4CFwi1CzOMh5E\nJEltqpEawsPA54FfiuuWA8NxeTh+BlgJDGX2HQJWzS2bkqSideZM95PAN4AfIjQTDdZsH6X+jCXZ\n7ZKkNpY3IHwjvn8T+FtCE9AwcANwHlgBPBvTPAPcmNl3dVw3QV9f39XlJElIkiR/riVpAUjTlDRN\nSztfnqnYrgMWASPASwh3FP0ecBvwLeA+Qofy0vi+CThACBqrCE1NNzOxluAUmm3AKTSl+aXoKTTz\n1BCWE2oFY+k/RQgKnwcOAbsIncc7YpqBuH4AuAzsxiYjlaJz7A9mgiVLlnHx4oUW5EeaXwqLNDOw\nhtAGqlhDsOagKiu6huD4AEkSYECQJEUGBEkSYECQJEUGBEkSYECQJEUGBEkSYECQJEUGBEkSYECQ\nJEUGBEkSYECQJEUGBEkSYECQJEUGBEkSYEBYELq6uuno6Jj0kqSsvAFhEfAY8FD83A0cB04TZk9b\nmkm7FzgDDAJbmpNNzcXIyPOEiWNqX5I0Lm9AuJswJebYr8geQkDYADwSP0OYT/nO+L4VeKCBc0iS\nWijPj/Vq4Hbgo4xP3bYN6I/L/cD2uNwDHAQuEeZZPgtsblJeJUkFyhMQPgT8NnAls245MByXh+Nn\ngJXAUCbdELBqjnmUJJVgpoBwB/Asof9gql7ImRqkbayWpHmgc4btP0FoHrodeBHQBTxIqBXcAJwH\nVhCCBsAzwI2Z/VfHdZP09fVdXU6ShCRJGs27JFVamqakaVra+Rq59/ANwG8BbwHuB74F3EfoUF4a\n3zcBBwj9BquAh4GbmVxLGB0dteJQlnCLab1/72asL/LYzTun3zdVQbxdvLB7xmeqIdQa+6vaDxwC\ndhE6j3fE9QNx/QBwGdiNTUZquc664y6WLFnGxYsXWpAfqT21anSSNYQSWUOw5qBqKLqG4BgBSRJg\nQJAkRQYESRJgQJAkRQYESRJgQJAkRQYESRJgQJAkRQaEiqk3O5ok5eFI5YqpPyp5fowadqSyND1H\nKkuSSmFAkCQBBgRJUmRAkCQBBgRJUmRAkCQBMweEFwEngFOEWdA+ENd3A8eB08AxwhSaY/YCZ4BB\nYEszMytJKk6e+1mvA75DmG7zXwjzKm8DniPMrXwPsIyJcyrfyvicyhuAKzXHdBxCQRyH4DgEVVc7\njEP4TnxfDCwCnicEhP64vh/YHpd7gIPAJcJcy2eBzU3KqySpQHkCwjWEJqNh4FHgKWB5/Ex8Xx6X\nVwJDmX2HCDUFSVKb68yR5grwKuBlwOeAN9ZsH6V+fTy7fZK+vr6ry0mSkCRJjqxI0sKRpilpmpZ2\nvkbbon4H+C7wbiABzgMrCDWHjYR+BID98f0osI/QMZ1lH0JB7EOwD0HV1eo+hOsZv4PoxcCbgMeA\nI0BvXN8LHI7LR4CdhP6GtcB64GQT8ytJKshMTUYrCJ3G18TXg8AjhKBwCNhF6DzeEdMPxPUDwGVg\nN9M3J0kt1Dnp8eBLlizj4sULLcqP1Fo+/rpibDKa+7H9bqpdtbrJSJK0QBgQJEmAAUGSFBkQJEmA\nAUGSFBkQJEmAAUGSFBkQJEmAAWHe6urqpqOjY9JLkmbLkcrzVP0RydCKkb2OVJbK4UhlSVIpDAiS\nJMCAIEmKDAiSJMCAINXorHv3VldXd6szJhUuz5zK0gJymXp3JI2MeEuvqi9PDeFGwpzJTwFPAu+J\n67uB48Bp4BjjU20C7AXOAIPAlmZlVpJUnDz/7bkhvk4BLwW+AGwH3gk8B9wP3AMsA/YAm4ADwK3A\nKuBhYANwJXNMxyHMkeMQyj+231m1WjuMQzhPCAYA/w18mfBDv40w3zLxfXtc7gEOApcI8y2fBTY3\nJ7uSpKI02qm8BrgFOAEsB4bj+uH4GWAlMJTZZ4gQQCRJbayRTuWXAp8B7gZGaraNUr+end0+QV9f\n39XlJElIkqSBrEhS9aVpSpqmpZ0vb1vUtcDfAX8PfDiuGwQSQpPSCkLH80ZCPwLA/vh+FNhHqFWM\nsQ9hjuxDsA9BC0879CF0AB8DBhgPBgBHgN643AsczqzfCSwG1gLrgZPNyKwkqTh5Is3rgH8CvsT4\nf532En7kDwE3ETqPdwDfjtvvBd5FuKn7buBzNce0hjBH1hCsIWjhKbqG4OOv5ykDggFBC087NBlJ\nkhYAA0Kbc2Y0SWXxWUZtbmTkeaZu7pCk5rGGIEkCDAiSpMiAIEkCDAhSTk6co+qzU1nKxYlzVH3W\nECRJgAFBmiObklQdNhlJc2JTkqrDGoIkCTAgSJIiA4IkCTAgtA0fYiep1exUbhM+xE5Sq+WpIXwc\nGAaeyKzrBo4Dp4FjwNLMtr3AGcKcy1uak01JUtHyBIRPAFtr1u0hBIQNwCPxM8Am4M74vhV4IOc5\nJEktlufH+p+B52vWbQP643I/sD0u9wAHgUuEeZbPApvnnEtJUuFm+7/35YRmJOL78ri8EhjKpBsC\nVs3yHJKkEjWjU3mU+r2h2e2T9PX1XV1OkoQkSZqQFUmqjjRNSdO0tPPlvYVlDfAQ8GPx8yCQAOeB\nFcCjwEbG+xL2x/ejwD7gRM3xRkdHp4shC0+4xXSqu4zmun6+HrsV52zesf2Oq9nireiF3Xo42yaj\nI0BvXO4FDmfW7wQWA2uB9cDJuWRQklSOPE1GB4E3ANcDXwN+l1ADOATsInQe74hpB+L6AcJTv3Yz\nfXOSVFGdkwYWLlmyjIsXL7QoP9LMWjXqySajGjYZtcs5iz2233vNRbs2GUmSKsaA0AL1nlskSa3m\ns4xaoP5ziwwKklrLGoIkCTAgSJIiA4IkCTAgFMpJbzRRZ93vQ1dXd6szJgGOQyhUY2ML5u+99Y5D\nmOuxryWM45zIgWyqVfQ4BO8yklruMvUCxciItUmVyyYjSRJgQJAkRQYESRJgQJDamHclqVwGBKlt\njXU2T3yNjIwYJFQI7zKS5p3JdyV5R5KaoagawlbCNJtngHsKOkfbcACaWs/mJc1dEQFhEfARQlDY\nBLwdeGUB52kb408vHXs9SrUniktbnYGCpa3OwCzkb16qcqAoc0L6KioiIGwGzhKm1rwE/CXQU8B5\nSpe/JpCWnbWSpa3OQMHSVmegiWoDxT6mCxQdHYvndQAxIMxNEQFhFWHu5TFDcd28N7kmMPaS5pv6\nNYrwfzg7sheqIgJC4b+QV65cmeJ/Nx3cccfPN+UczmomZU0OII02R01Vw66XvpG0ap4ifuVeC/QR\n+hAA9gJXgPsyac4C6wo4tyRV2Tng5lZnohGdhEyvARYDp6h4p7IkaWpvBv6DUBPY2+K8SJIkSSpa\nnoFnfxK3Pw7ckmPfPwS+HNP/DfCyzLa9Mf0gsGXu2Z9RmeVbA3wXeCy+HmhGAWZQRPl+P6Y9BTwC\n3JjZVoXrN1X51lDu9SuibGN+k9Dfl+25rcK1G1NbvjVU42+vj3A351g53pzZVvj1W0RoClpDmOqp\nXh/B7cBn4/JrgH/Lse+bGL/raX98QRjcdiqmXxP3L/IZTGWXbw3wRPOyP6Oiyrcks/9dwEfjclWu\n31TlW0N516+oskEIcEeB/2L8B7Mq1w7ql28N1fjb2wf8Rp3zNXz9ZnNx8ww82wb0x+UTwFLghhn2\nPU6I3mP7rI7LPcDBmP7puP/mWeQ7r7LLV7aiyjeS2f+lwHNxuSrXb6rylamosgH8EfDemmNV5dpB\n/fKVrcjy1btjtOHrN5uAkGfg2VRpVubYF+BdjEfJlTHdTPs0S9nlA1hLqOqlwOtmk+kGFFm+9wNf\nBd4BfCCuq9L1GytfL+M1PCjv+hVVtp74+Us1x6rKtZuqfFCdv727CE1MHyMEEZjF9ZtNQMg78Gy2\nYxzeB3wPONCEPMxG2eX7OqE6ewuh2neAic0TzVZk+d4H3AR8AvhwE/IwG2WU7y+AD8V1ZV6/Isr2\nYuBeQrNDnv3n27WbrnxV+dv7U0JgexXwDeCDs83DbB5//QwTOwxvZGIUqpdmdUxz7Qz7voPQhvYz\nMxzrmVnkO6+yy/e9+AL4ImEMx/q4XIQiyzfmAOM1oCpdvzHZ8pV5/Yoo2zpC+/LjmfRfILRfV+Ha\nTVW+zcCzVONv79nM+o8CD01zrKZfvzwDz7IdI69lvGNkun23Ak8B19cca6xjZDEhCp6jmBHWY8ou\n3/WEDiOAVxAu8lKKU1T51mf2vwt4MC5X5fpNVb4yr19RZcuq16k8369dVrZ8VfnbW5HZ/9cZb30o\n7frVG3j2y/E15iNx++PAq2fYF8KtUV+h/i1g98b0g8DPNqsQ0yizfG8DnozrvgD8XBPLMZUiyvdp\nwh0bp4DPAC/PbKvC9ZuqfG+l3OtXRNmy/pOJt51W4dplZctX9rWDYsr3SUL/yOPAYWB5ZlvZ10+S\nJEmSJEmSJEmSJEmSJEmSJEmStJD8PzxAIwQKcNCwAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1028,7 +1028,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1039,7 +1039,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1090,7 +1090,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/settings.xml b/docs/source/pythonapi/examples/settings.xml new file mode 100644 index 000000000..26a23e942 --- /dev/null +++ b/docs/source/pythonapi/examples/settings.xml @@ -0,0 +1,21 @@ + + + + 2500 + 20 + 5 + + + + -10.71 -10.71 -10 10.71 10.71 10.0 + + + + false + true + + + true + 200 + + diff --git a/docs/source/pythonapi/examples/tallies.xml b/docs/source/pythonapi/examples/tallies.xml new file mode 100644 index 000000000..61873a91d --- /dev/null +++ b/docs/source/pythonapi/examples/tallies.xml @@ -0,0 +1,23 @@ + + + + 17 17 + -10.71 -10.71 + 1.26 1.26 + + + + + fission nu-fission + + + + U-235 U-238 + scatter-y2 + + + + absorption scatter + + + diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index ca8b84245..f3f2c52f1 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -369,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDA6MjQ6NTQtMDQ6MDDJTGA9AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAwOjI0OjU0LTA0OjAwuBHYgQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDE6MDM6MjktMDQ6MDDFeHPZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAxOjAzOjI5LTA0OjAwtCXLZQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -580,7 +580,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 00:24:54\n", + " Date/Time: 2015-10-03 01:03:29\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -636,20 +636,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 7.0100E-01 seconds\n", - " Reading cross sections = 1.5800E-01 seconds\n", - " Total time in simulation = 2.0485E+01 seconds\n", - " Time in transport only = 2.0465E+01 seconds\n", - " Time in inactive batches = 3.0920E+00 seconds\n", - " Time in active batches = 1.7393E+01 seconds\n", - " Time synchronizing fission bank = 5.0000E-03 seconds\n", - " Sampling source sites = 4.0000E-03 seconds\n", + " Total time for initialization = 4.1300E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 2.1398E+01 seconds\n", + " Time in transport only = 2.1378E+01 seconds\n", + " Time in inactive batches = 2.0260E+00 seconds\n", + " Time in active batches = 1.9372E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 0.0000E+00 seconds\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 = 2.1200E+01 seconds\n", - " Calculation Rate (inactive) = 4042.69 neutrons/second\n", - " Calculation Rate (active) = 2156.04 neutrons/second\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 3.0000E-03 seconds\n", + " Total time elapsed = 2.1823E+01 seconds\n", + " Calculation Rate (inactive) = 6169.79 neutrons/second\n", + " Calculation Rate (active) = 1935.78 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -721,7 +721,20 @@ "collapsed": false, "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "KeyError", + "evalue": "10003", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the summary file and link with statepoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0msu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'summary.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlink_with_summary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msu\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/statepoint.pyc\u001b[0m in \u001b[0;36mlink_with_summary\u001b[1;34m(self, summary)\u001b[0m\n\u001b[0;32m 610\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mtally_id\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtally\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 611\u001b[0m \u001b[1;31m# Get the Tally name from the summary file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 612\u001b[1;33m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtally_id\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 613\u001b[0m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_summary\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 10003" + ] + } + ], "source": [ "# Load the summary file and link with statepoint\n", "su = Summary('summary.h5')\n", @@ -739,47 +752,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "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", - "
nuclidescoremeanstd. dev.
0total(nu-fission / absorption)1.0463530.00935
\n", - "
" - ], - "text/plain": [ - " nuclide score mean std. dev.\n", - "0 total (nu-fission / absorption) 1.046353 0.00935" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute k-infinity using tally arithmetic\n", "fiss_rate = sp.get_tally(name='fiss. rate')\n", @@ -799,49 +776,11 @@ }, { "cell_type": "code", - "execution_count": 27, + "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", - "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)totalabsorption0.958730.00774
\n", - "
" - ], - "text/plain": [ - " energy [MeV] nuclide score mean std. dev.\n", - "0 (0.0e+00 - 6.2e-01) total absorption 0.95873 0.00774" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute resonance escape probability using tally arithmetic\n", "therm_abs_rate = sp.get_tally(name='therm. abs. rate')\n", @@ -859,47 +798,11 @@ }, { "cell_type": "code", - "execution_count": 28, + "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", - "
nuclidescoremeanstd. dev.
0totalnu-fission1.0916220.011163
\n", - "
" - ], - "text/plain": [ - " nuclide score mean std. dev.\n", - "0 total nu-fission 1.091622 0.011163" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute fast fission factor factor using tally arithmetic\n", "therm_fiss_rate = sp.get_tally(name='therm. fiss. rate')\n", @@ -918,51 +821,11 @@ }, { "cell_type": "code", - "execution_count": 29, + "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", - "
energy [MeV]cellnuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)10000totalabsorption0.8020120.006609
\n", - "
" - ], - "text/plain": [ - " energy [MeV] cell nuclide score mean std. dev.\n", - "0 (0.0e+00 - 6.2e-01) 10000 total absorption 0.802012 0.006609" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute thermal flux utilization factor using tally arithmetic\n", "fuel_therm_abs_rate = sp.get_tally(name='fuel therm. abs. rate')\n", @@ -979,49 +842,11 @@ }, { "cell_type": "code", - "execution_count": 30, + "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", - "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(nu-fission / absorption)1.2466040.011825
\n", - "
" - ], - "text/plain": [ - " energy [MeV] nuclide score mean std. dev.\n", - "0 (0.0e+00 - 6.2e-01) total (nu-fission / absorption) 1.246604 0.011825" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute neutrons produced per absorption (eta) using tally arithmetic\n", "eta = therm_fiss_rate / fuel_therm_abs_rate\n", @@ -1037,52 +862,11 @@ }, { "cell_type": "code", - "execution_count": 31, + "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", - "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(((absorption * nu-fission) * absorption) * (n...1.0463530.01894
\n", - "
" - ], - "text/plain": [ - " energy [MeV] nuclide \\\n", - "0 (0.0e+00 - 6.2e-01) total \n", - "\n", - " score mean std. dev. \n", - "0 (((absorption * nu-fission) * absorption) * (n... 1.046353 0.01894 " - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "keff = res_esc * fast_fiss * therm_util * eta\n", "keff.get_pandas_dataframe()" @@ -1099,7 +883,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true @@ -1115,131 +899,11 @@ }, { "cell_type": "code", - "execution_count": 33, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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 [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)(U-238 / total)(nu-fission / flux)6.641746e-076.859257e-09
110000(0.0e+00 - 6.3e-07)(U-238 / total)(scatter / flux)2.099861e-011.966887e-03
210000(0.0e+00 - 6.3e-07)(U-235 / total)(nu-fission / flux)3.556665e-013.717881e-03
310000(0.0e+00 - 6.3e-07)(U-235 / total)(scatter / flux)5.554650e-035.218094e-05
410000(6.3e-07 - 2.0e+01)(U-238 / total)(nu-fission / flux)7.165057e-035.625590e-05
510000(6.3e-07 - 2.0e+01)(U-238 / total)(scatter / flux)2.276535e-018.544314e-04
610000(6.3e-07 - 2.0e+01)(U-235 / total)(nu-fission / flux)8.089493e-035.080374e-05
710000(6.3e-07 - 2.0e+01)(U-235 / total)(scatter / flux)3.370111e-031.361116e-05
\n", - "
" - ], - "text/plain": [ - " cell energy [MeV] nuclide score \\\n", - "0 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (nu-fission / flux) \n", - "1 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (scatter / flux) \n", - "2 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (nu-fission / flux) \n", - "3 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (scatter / flux) \n", - "4 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (nu-fission / flux) \n", - "5 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (scatter / flux) \n", - "6 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (nu-fission / flux) \n", - "7 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (scatter / flux) \n", - "\n", - " mean std. dev. \n", - "0 6.641746e-07 6.859257e-09 \n", - "1 2.099861e-01 1.966887e-03 \n", - "2 3.556665e-01 3.717881e-03 \n", - "3 5.554650e-03 5.218094e-05 \n", - "4 7.165057e-03 5.625590e-05 \n", - "5 2.276535e-01 8.544314e-04 \n", - "6 8.089493e-03 5.080374e-05 \n", - "7 3.370111e-03 1.361116e-05 " - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "fuel_xs = fuel_rxn_rates / flux\n", "fuel_xs.get_pandas_dataframe()" @@ -1254,23 +918,11 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 6.64174599e-07]\n", - " [ 3.55666541e-01]]\n", - "\n", - " [[ 7.16505734e-03]\n", - " [ 8.08949336e-03]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Show how to use Tally.get_values(...) with a CrossScore\n", "nu_fiss_xs = fuel_xs.get_values(scores=['(nu-fission / flux)'])\n", @@ -1286,21 +938,11 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.00555465]]\n", - "\n", - " [[ 0.00337011]]]\n" - ] - } - ], + "outputs": [], "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", @@ -1310,20 +952,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.22765348]\n", - " [ 0.00337011]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Show how to use Tally.get_values(...) with a CrossFilter and CrossScore\n", "fast_scatter_xs = fuel_xs.get_values(filters=['energy'], \n", @@ -1341,81 +974,11 @@ }, { "cell_type": "code", - "execution_count": 37, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)U-238nu-fission0.0000021.284890e-08
110000(0.0e+00 - 6.3e-07)U-235nu-fission0.8679827.022256e-03
210000(6.3e-07 - 2.0e+01)U-238nu-fission0.0828016.087096e-04
310000(6.3e-07 - 2.0e+01)U-235nu-fission0.0934845.275039e-04
\n", - "
" - ], - "text/plain": [ - " cell energy [MeV] nuclide score mean std. dev.\n", - "0 10000 (0.0e+00 - 6.3e-07) U-238 nu-fission 0.000002 1.284890e-08\n", - "1 10000 (0.0e+00 - 6.3e-07) U-235 nu-fission 0.867982 7.022256e-03\n", - "2 10000 (6.3e-07 - 2.0e+01) U-238 nu-fission 0.082801 6.087096e-04\n", - "3 10000 (6.3e-07 - 2.0e+01) U-235 nu-fission 0.093484 5.275039e-04" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# \"Slice\" the nu-fission data into a new derived Tally\n", "nu_fission_rates = fuel_rxn_rates.get_slice(scores=['nu-fission'])\n", @@ -1424,131 +987,11 @@ }, { "cell_type": "code", - "execution_count": 38, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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 [MeV]nuclidescoremeanstd. dev.
010002(1.0e-08 - 1.1e-07)H-1scatter4.6205250.038249
110002(1.1e-07 - 1.2e-06)H-1scatter2.0368410.013203
210002(1.2e-06 - 1.3e-05)H-1scatter1.6599160.010107
310002(1.3e-05 - 1.4e-04)H-1scatter1.8615460.013328
410002(1.4e-04 - 1.5e-03)H-1scatter2.0496640.008215
510002(1.5e-03 - 1.6e-02)H-1scatter2.1621570.010245
610002(1.6e-02 - 1.7e-01)H-1scatter2.2244960.013796
710002(1.7e-01 - 1.9e+00)H-1scatter1.9975850.009161
810002(1.9e+00 - 2.0e+01)H-1scatter0.3734720.003922
\n", - "
" - ], - "text/plain": [ - " cell energy [MeV] nuclide score mean std. dev.\n", - "0 10002 (1.0e-08 - 1.1e-07) H-1 scatter 4.620525 0.038249\n", - "1 10002 (1.1e-07 - 1.2e-06) H-1 scatter 2.036841 0.013203\n", - "2 10002 (1.2e-06 - 1.3e-05) H-1 scatter 1.659916 0.010107\n", - "3 10002 (1.3e-05 - 1.4e-04) H-1 scatter 1.861546 0.013328\n", - "4 10002 (1.4e-04 - 1.5e-03) H-1 scatter 2.049664 0.008215\n", - "5 10002 (1.5e-03 - 1.6e-02) H-1 scatter 2.162157 0.010245\n", - "6 10002 (1.6e-02 - 1.7e-01) H-1 scatter 2.224496 0.013796\n", - "7 10002 (1.7e-01 - 1.9e+00) H-1 scatter 1.997585 0.009161\n", - "8 10002 (1.9e+00 - 2.0e+01) H-1 scatter 0.373472 0.003922" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "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", diff --git a/openmc/tallies.py b/openmc/tallies.py index 50afe6072..63ba4df07 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1612,26 +1612,23 @@ class Tally(object): if self.filters != other.filters: - self_shape = list(self.mean.shape) - other_shape = list(other.mean.shape) - - # FIXME: # Determine the number of paired combinations of filter bins # between the two tallies and repeat arrays along filter axes diff1 = list(set(self.filters).difference(set(other.filters))) diff2 = list(set(other.filters).difference(set(self.filters))) - # + # Determine the factors by which each tally operands' data arrays + # must be tiled or repeated for the tally outer product other_tile_factor = 1 self_repeat_factor = 1 - - # for filter in diff1: other_tile_factor *= filter.num_bins for filter in diff2: self_repeat_factor *= filter.num_bins - # Replicate the data + # Tile / repeat the tally data for the tally outer product + self_shape = list(self.mean.shape) + other_shape = list(other.mean.shape) self_shape[0] *= self_repeat_factor self_mean = np.repeat(self_mean, self_repeat_factor) self_std_dev = np.repeat(self_std_dev, self_repeat_factor) @@ -1644,6 +1641,8 @@ class Tally(object): other_mean = np.tile(other_mean, (other_tile_factor, 1, 1)) other_std_dev = np.tile(other_std_dev, (other_tile_factor, 1, 1)) + # NumPy repeat and tile routines return 1D flattened arrays + # Reshape arrays as 3D with filters, nuclides and scores axes self_mean.shape = tuple(self_shape) self_std_dev.shape = tuple(self_shape) other_mean.shape = tuple(other_shape) @@ -1656,14 +1655,15 @@ class Tally(object): self_repeat_factor = other.num_nuclides other_tile_factor = self.num_nuclides - self_shape = list(self.mean.shape) - # Replicate the data self_mean = np.repeat(self_mean, self_repeat_factor, axis=1) other_mean = np.tile(other_mean, (1, other_tile_factor, 1)) self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=1) other_std_dev = np.tile(other_std_dev, (1, other_tile_factor, 1)) + # NumPy repeat and tile routines return 1D flattened arrays + # Reshape arrays as 3D with filters, nuclides and scores axes + self_shape = list(self.mean.shape) self_shape[1] *= self_repeat_factor self_mean.shape = tuple(self_shape) self_std_dev.shape = tuple(self_shape) @@ -1675,14 +1675,15 @@ class Tally(object): self_repeat_factor = other.num_score_bins other_tile_factor = self.num_score_bins - self_shape = list(self.mean.shape) - # Replicate the data self_mean = np.repeat(self_mean, self_repeat_factor, axis=2) other_mean = np.tile(other_mean, (1, 1, other_tile_factor)) self_std_dev = np.repeat(self_std_dev, self_repeat_factor, axis=2) other_std_dev = np.tile(other_std_dev, (1, 1, other_tile_factor)) + # NumPy repeat and tile routines return 1D flattened arrays + # Reshape arrays as 3D with filters, nuclides and scores axes + self_shape = list(self.mean.shape) self_shape[2] *= self_repeat_factor self_mean.shape = tuple(self_shape) self_std_dev.shape = tuple(self_shape) @@ -1697,11 +1698,31 @@ class Tally(object): return data def swap_filters(self, filter1, filter2): - """ + """Reverse the ordering of two filters in this tally + + This is a helper routine for tally arithmetic which helps align the data + in two tallies with shared filters. This routine copies this tally and + reverses the order of the two filters. + + Parameters + ---------- + filter1 : Filter + The filter to swap with filter2 + + filter2 : Filter + The filter to swap with filter1 + + Returns + ------- + swap_tally + A copy of this tally with the filters swapped + + Raises + ------ + ValueError + If this is a derived tally or this method is called before the tally + is populated with data by the StatePoint.read_results() method. - :param filter1: - :param filter2: - :return: """ # Check that results have been read @@ -1739,6 +1760,7 @@ class Tally(object): filter.stride = stride stride *= filter.num_bins + # Construct lists of tuples for the bins in each of the two filters filters = [filter1.type, filter2.type] if filter1.type == 'distribcell': filter1_bins = np.arange(filter.num_bins) @@ -1750,6 +1772,7 @@ class Tally(object): else: filter2_bins = [filter2.get_bin(i) for i in range(filter2.num_bins)] + # Adjust the sum data array to relect the new filter order if self.sum is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): filter_bins = [(bin1,), (bin2,)] @@ -1758,6 +1781,7 @@ class Tally(object): indices = swap_tally.get_filter_indices(filters, filter_bins) swap_tally.sum[indices, :, :] = data + # Adjust the sum_sq data array to relect the new filter order if self.sum_sq is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): filter_bins = [(bin1,), (bin2,)] @@ -1766,7 +1790,8 @@ class Tally(object): indices = swap_tally.get_filter_indices(filters, filter_bins) swap_tally.sum_sq[indices, :, :] = data - if self.sum is not None: + # Adjust the mean data array to relect the new filter order + if self.mean is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): filter_bins = [(bin1,), (bin2,)] data = self.get_values(filters=filters, @@ -1774,7 +1799,8 @@ class Tally(object): indices = swap_tally.get_filter_indices(filters, filter_bins) swap_tally._mean[indices, :, :] = data - if self.sum is not None: + # Adjust the std_dev data array to relect the new filter order + if self.std_dev is not None: for bin1, bin2 in itertools.product(filter1_bins, filter2_bins): filter_bins = [(bin1,), (bin2,)] data = self.get_values(filters=filters, From 5ee352bc95e1dfead88cfbd3aafa5a0cc0d580af Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 01:05:14 -0400 Subject: [PATCH 065/130] Removed IPython Notebook example XML files --- docs/source/pythonapi/examples/geometry.xml | 38 ------------------ .../pythonapi/examples/materials-xy.png | Bin 1271 -> 0 bytes docs/source/pythonapi/examples/materials.xml | 20 --------- docs/source/pythonapi/examples/plots.xml | 8 ---- docs/source/pythonapi/examples/settings.xml | 21 ---------- docs/source/pythonapi/examples/tallies.xml | 23 ----------- 6 files changed, 110 deletions(-) delete mode 100644 docs/source/pythonapi/examples/geometry.xml delete mode 100644 docs/source/pythonapi/examples/materials-xy.png delete mode 100644 docs/source/pythonapi/examples/materials.xml delete mode 100644 docs/source/pythonapi/examples/plots.xml delete mode 100644 docs/source/pythonapi/examples/settings.xml delete mode 100644 docs/source/pythonapi/examples/tallies.xml diff --git a/docs/source/pythonapi/examples/geometry.xml b/docs/source/pythonapi/examples/geometry.xml deleted file mode 100644 index 8e9f1ef3d..000000000 --- a/docs/source/pythonapi/examples/geometry.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - 1.26 1.26 - 17 17 - -10.71 -10.71 - -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 -10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 - - - - - - - - - - diff --git a/docs/source/pythonapi/examples/materials-xy.png b/docs/source/pythonapi/examples/materials-xy.png deleted file mode 100644 index f4c31899516ea2a3f585861e65394dfd9bb9ba56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 zcmZ{jeN>Wn6vrPkJ7<=2={b=rqn489Of1U{1V#q}n*te4O4EEPU#Fg=BWn66nP%lQ z%d*gHT2}KUW3DVJX}+YDNot18hAAswP|-jI8;Sf3UDR*%Wz7LnSW-JU%%UB(!SR4hvzM^s*rhoir@GmO$*Ml{ z&2`TtWgqezYj0L}E4GHFu?t`QejA+>(5Q&uhIWHIyU;(Fv!AA#GLhebv>9u3daQKG zb9~sF+RY9j@Y8EF_x?+z;(~_UKFjm?-8HYC2%~MMR^QDrIg-^SYDCb<2Ncs)RkL3O zSQBH`WvP_us5ZgX?*ZVP4RiJYrJRJwLy_^-!wOwca=T{Hd+vlWUX;*VhSpV|3tN>c z1@Zp#CNIfpF6gtU_(P|11LhRd==}?5ou(ksykgT8G^$_5Aq3|H ze*F-nHFES8d=?7ni>Wa39jG)|im0GP zhkr4T?;hd)Eixdh%&7fQV05(Lj)G+m!Hz*i3wmmb*7|QQ;w1#0Hvnf44t`I7psfr3V?_BvpDY{UPKXSagSMB!Vr3NxNozK# zY>d*zxPS*V#}2r?QjxEOYetk&%BudEQKTRT4Uv~zL^IRP(g8T;FPd0K`*~g(`RT+0 zJc_iez7JOR!!hcr!g0mXT0j`G;O@ew)$mVbxXB6*EyLfXuIR?T-BrjG2%{r}2T4(f z4`KpsCVFr6^d@=|xA2MHB;pp54>tRdh{W^7w4(n2KPE@V9ZLUyV5FzO8v`JJCWleK H{ebu%i<^#J diff --git a/docs/source/pythonapi/examples/materials.xml b/docs/source/pythonapi/examples/materials.xml deleted file mode 100644 index 42c2e5029..000000000 --- a/docs/source/pythonapi/examples/materials.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - 71c - - - - - - - - - - - - - - - - - diff --git a/docs/source/pythonapi/examples/plots.xml b/docs/source/pythonapi/examples/plots.xml deleted file mode 100644 index 512070a33..000000000 --- a/docs/source/pythonapi/examples/plots.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - 0 0 0 - 21.5 21.5 - 250 250 - - diff --git a/docs/source/pythonapi/examples/settings.xml b/docs/source/pythonapi/examples/settings.xml deleted file mode 100644 index 26a23e942..000000000 --- a/docs/source/pythonapi/examples/settings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 2500 - 20 - 5 - - - - -10.71 -10.71 -10 10.71 10.71 10.0 - - - - false - true - - - true - 200 - - diff --git a/docs/source/pythonapi/examples/tallies.xml b/docs/source/pythonapi/examples/tallies.xml deleted file mode 100644 index 61873a91d..000000000 --- a/docs/source/pythonapi/examples/tallies.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - 17 17 - -10.71 -10.71 - 1.26 1.26 - - - - - fission nu-fission - - - - U-235 U-238 - scatter-y2 - - - - absorption scatter - - - From dd50063e87cb19dbba6d0e82739e566386f3c853 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 01:08:37 -0400 Subject: [PATCH 066/130] Removed unused Tally.tile_filter(...) routine --- .../examples/pandas-dataframes.ipynb | 1424 +---------------- .../pythonapi/examples/post-processing.ipynb | 368 +---- openmc/tallies.py | 75 +- 3 files changed, 93 insertions(+), 1774 deletions(-) diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index f84e9ec1a..2267703c4 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -385,7 +385,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAwOjQ2\nOjE5LTA0OjAwwJEVeQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMDo0NjoxOS0wNDow\nMLHMrcUAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAxOjAz\nOjQwLTA0OjAwlo8/jQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMTowMzo0MC0wNDow\nMOfShzEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -558,6 +558,7 @@ "name": "stdout", "output_type": "stream", "text": [ + "rm: cannot remove ‘statepoint.*’: No such file or directory\n", "\n", " .d88888b. 888b d888 .d8888b.\n", " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", @@ -575,7 +576,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 00:46:19\n", + " Date/Time: 2015-10-03 01:03:41\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -643,20 +644,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9600E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 1.2458E+01 seconds\n", - " Time in transport only = 1.2445E+01 seconds\n", - " Time in inactive batches = 1.2760E+00 seconds\n", - " Time in active batches = 1.1182E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for initialization = 7.5300E-01 seconds\n", + " Reading cross sections = 1.6900E-01 seconds\n", + " Total time in simulation = 2.0057E+01 seconds\n", + " Time in transport only = 1.9977E+01 seconds\n", + " Time in inactive batches = 2.1180E+00 seconds\n", + " Time in active batches = 1.7939E+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 = 0.0000E+00 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.2865E+01 seconds\n", - " Calculation Rate (inactive) = 9796.24 neutrons/second\n", - " Calculation Rate (active) = 3353.60 neutrons/second\n", + " Total time elapsed = 2.0825E+01 seconds\n", + " Calculation Rate (inactive) = 5901.79 neutrons/second\n", + " Calculation Rate (active) = 2090.42 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -717,7 +718,20 @@ "collapsed": false, "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "KeyError", + "evalue": "10003", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the summary file and link with statepoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0msu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'summary.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlink_with_summary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msu\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/statepoint.pyc\u001b[0m in \u001b[0;36mlink_with_summary\u001b[1;34m(self, summary)\u001b[0m\n\u001b[0;32m 610\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mtally_id\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtally\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 611\u001b[0m \u001b[1;31m# Get the Tally name from the summary file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 612\u001b[1;33m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtally_id\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 613\u001b[0m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_summary\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 10003" + ] + } + ], "source": [ "# Load the summary file and link with statepoint\n", "su = Summary('summary.h5')\n", @@ -733,28 +747,11 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10000\n", - "\tName =\tmesh tally\n", - "\tFilters =\t\n", - " \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", - "\tEstimator =\ttracklength\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Find the mesh tally with the StatePoint API\n", "tally = sp.get_tally(name='mesh tally')\n", @@ -772,25 +769,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.1127471 ]]\n", - "\n", - " [[ 0.06599162]]\n", - "\n", - " [[ 0.25310075]]\n", - "\n", - " [[ 0.10150973]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Get the relative error for the thermal fission reaction \n", "# rates in the four corner pins \n", @@ -802,271 +785,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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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 1energy [MeV]scoremeanstd. dev.
xyz
0111(0.0e+00 - 6.3e-07)fission0.0002240.000025
1111(0.0e+00 - 6.3e-07)nu-fission0.0005460.000062
2111(6.3e-07 - 2.0e+01)fission0.0000710.000004
3111(6.3e-07 - 2.0e+01)nu-fission0.0001870.000010
4121(0.0e+00 - 6.3e-07)fission0.0003920.000045
5121(0.0e+00 - 6.3e-07)nu-fission0.0009550.000110
6121(6.3e-07 - 2.0e+01)fission0.0000960.000005
7121(6.3e-07 - 2.0e+01)nu-fission0.0002520.000014
8131(0.0e+00 - 6.3e-07)fission0.0005510.000053
9131(0.0e+00 - 6.3e-07)nu-fission0.0013430.000130
10131(6.3e-07 - 2.0e+01)fission0.0001310.000008
11131(6.3e-07 - 2.0e+01)nu-fission0.0003430.000019
12141(0.0e+00 - 6.3e-07)fission0.0006880.000063
13141(0.0e+00 - 6.3e-07)nu-fission0.0016760.000153
14141(6.3e-07 - 2.0e+01)fission0.0001510.000007
15141(6.3e-07 - 2.0e+01)nu-fission0.0003950.000019
16151(0.0e+00 - 6.3e-07)fission0.0007850.000065
17151(0.0e+00 - 6.3e-07)nu-fission0.0019140.000158
18151(6.3e-07 - 2.0e+01)fission0.0001870.000008
19151(6.3e-07 - 2.0e+01)nu-fission0.0004870.000019
\n", - "
" - ], - "text/plain": [ - " mesh 1 energy [MeV] score mean std. dev.\n", - " x y z \n", - "0 1 1 1 (0.0e+00 - 6.3e-07) fission 0.000224 0.000025\n", - "1 1 1 1 (0.0e+00 - 6.3e-07) nu-fission 0.000546 0.000062\n", - "2 1 1 1 (6.3e-07 - 2.0e+01) fission 0.000071 0.000004\n", - "3 1 1 1 (6.3e-07 - 2.0e+01) nu-fission 0.000187 0.000010\n", - "4 1 2 1 (0.0e+00 - 6.3e-07) fission 0.000392 0.000045\n", - "5 1 2 1 (0.0e+00 - 6.3e-07) nu-fission 0.000955 0.000110\n", - "6 1 2 1 (6.3e-07 - 2.0e+01) fission 0.000096 0.000005\n", - "7 1 2 1 (6.3e-07 - 2.0e+01) nu-fission 0.000252 0.000014\n", - "8 1 3 1 (0.0e+00 - 6.3e-07) fission 0.000551 0.000053\n", - "9 1 3 1 (0.0e+00 - 6.3e-07) nu-fission 0.001343 0.000130\n", - "10 1 3 1 (6.3e-07 - 2.0e+01) fission 0.000131 0.000008\n", - "11 1 3 1 (6.3e-07 - 2.0e+01) nu-fission 0.000343 0.000019\n", - "12 1 4 1 (0.0e+00 - 6.3e-07) fission 0.000688 0.000063\n", - "13 1 4 1 (0.0e+00 - 6.3e-07) nu-fission 0.001676 0.000153\n", - "14 1 4 1 (6.3e-07 - 2.0e+01) fission 0.000151 0.000007\n", - "15 1 4 1 (6.3e-07 - 2.0e+01) nu-fission 0.000395 0.000019\n", - "16 1 5 1 (0.0e+00 - 6.3e-07) fission 0.000785 0.000065\n", - "17 1 5 1 (0.0e+00 - 6.3e-07) nu-fission 0.001914 0.000158\n", - "18 1 5 1 (6.3e-07 - 2.0e+01) fission 0.000187 0.000008\n", - "19 1 5 1 (6.3e-07 - 2.0e+01) nu-fission 0.000487 0.000019" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get a pandas dataframe for the mesh tally data\n", "df = tally.get_pandas_dataframe(nuclides=False)\n", @@ -1077,22 +800,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": "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\nBPCvjMC6bD6xSh4AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create a boxplot to view the distribution of\n", "# fission and nu-fission rates in the pins\n", @@ -1101,32 +813,11 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\nefX/AdmeWI23zkQnAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Extract thermal nu-fission rates from pandas\n", "fiss = df[df['score'] == 'nu-fission']\n", @@ -1151,27 +842,11 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10001\n", - "\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", - "\tEstimator =\tanalog\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Find the cell Tally with the StatePoint API\n", "tally = sp.get_tally(name='cell tally')\n", @@ -1182,202 +857,11 @@ }, { "cell_type": "code", - "execution_count": 29, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellnuclidescoremeanstd. dev.
010000U-235scatter-Y0,00.0383300.001119
110000U-235scatter-Y1,-10.0000080.000341
210000U-235scatter-Y1,0-0.0003420.000342
310000U-235scatter-Y1,10.0002010.000262
410000U-235scatter-Y2,-20.0001360.000152
510000U-235scatter-Y2,-10.0000420.000131
610000U-235scatter-Y2,00.0003030.000185
710000U-235scatter-Y2,1-0.0004070.000184
810000U-235scatter-Y2,2-0.0001450.000120
910000U-238scatter-Y0,02.3193220.006166
1010000U-238scatter-Y1,-1-0.0236380.001940
1110000U-238scatter-Y1,0-0.0034630.001892
1210000U-238scatter-Y1,10.0250990.002270
1310000U-238scatter-Y2,-2-0.0006170.001197
1410000U-238scatter-Y2,-10.0025490.001187
1510000U-238scatter-Y2,00.0071210.001646
1610000U-238scatter-Y2,1-0.0000580.001323
1710000U-238scatter-Y2,2-0.0022350.000867
\n", - "
" - ], - "text/plain": [ - " cell nuclide score mean std. dev.\n", - "0 10000 U-235 scatter-Y0,0 0.038330 0.001119\n", - "1 10000 U-235 scatter-Y1,-1 0.000008 0.000341\n", - "2 10000 U-235 scatter-Y1,0 -0.000342 0.000342\n", - "3 10000 U-235 scatter-Y1,1 0.000201 0.000262\n", - "4 10000 U-235 scatter-Y2,-2 0.000136 0.000152\n", - "5 10000 U-235 scatter-Y2,-1 0.000042 0.000131\n", - "6 10000 U-235 scatter-Y2,0 0.000303 0.000185\n", - "7 10000 U-235 scatter-Y2,1 -0.000407 0.000184\n", - "8 10000 U-235 scatter-Y2,2 -0.000145 0.000120\n", - "9 10000 U-238 scatter-Y0,0 2.319322 0.006166\n", - "10 10000 U-238 scatter-Y1,-1 -0.023638 0.001940\n", - "11 10000 U-238 scatter-Y1,0 -0.003463 0.001892\n", - "12 10000 U-238 scatter-Y1,1 0.025099 0.002270\n", - "13 10000 U-238 scatter-Y2,-2 -0.000617 0.001197\n", - "14 10000 U-238 scatter-Y2,-1 0.002549 0.001187\n", - "15 10000 U-238 scatter-Y2,0 0.007121 0.001646\n", - "16 10000 U-238 scatter-Y2,1 -0.000058 0.001323\n", - "17 10000 U-238 scatter-Y2,2 -0.002235 0.000867" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get a pandas dataframe for the cell tally data\n", "df = tally.get_pandas_dataframe()\n", @@ -1395,20 +879,11 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.00086668 0.0061658 ]\n", - " [ 0.00011981 0.00111862]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Get the standard deviations for two of the spherical harmonic\n", "# scattering reaction rates \n", @@ -1426,27 +901,11 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10002\n", - "\tName =\tdistribcell tally\n", - "\tFilters =\t\n", - " \t\tdistribcell\t[10002]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t[u'absorption', u'scatter']\n", - "\tEstimator =\ttracklength\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Find the distribcell Tally with the StatePoint API\n", "tally = sp.get_tally(name='distribcell tally')\n", @@ -1464,19 +923,11 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.03658762]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Get the relative error for the scattering reaction rates in\n", "# the first 30 distribcell instances \n", @@ -1494,199 +945,11 @@ }, { "cell_type": "code", - "execution_count": 33, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
distribcellscoremeanstd. dev.
558279absorption0.0000810.000008
559279scatter0.0131090.000358
560280absorption0.0000880.000010
561280scatter0.0143950.000586
562281absorption0.0000970.000010
563281scatter0.0146370.000427
564282absorption0.0001070.000009
565282scatter0.0156830.000552
566283absorption0.0001100.000009
567283scatter0.0162930.000627
568284absorption0.0001110.000007
569284scatter0.0170320.000445
570285absorption0.0001120.000006
571285scatter0.0176660.000425
572286absorption0.0001230.000011
573286scatter0.0177060.000597
574287absorption0.0001080.000011
575287scatter0.0173390.000664
576288absorption0.0001290.000011
577288scatter0.0184520.000523
\n", - "
" - ], - "text/plain": [ - " distribcell score mean std. dev.\n", - "558 279 absorption 0.000081 0.000008\n", - "559 279 scatter 0.013109 0.000358\n", - "560 280 absorption 0.000088 0.000010\n", - "561 280 scatter 0.014395 0.000586\n", - "562 281 absorption 0.000097 0.000010\n", - "563 281 scatter 0.014637 0.000427\n", - "564 282 absorption 0.000107 0.000009\n", - "565 282 scatter 0.015683 0.000552\n", - "566 283 absorption 0.000110 0.000009\n", - "567 283 scatter 0.016293 0.000627\n", - "568 284 absorption 0.000111 0.000007\n", - "569 284 scatter 0.017032 0.000445\n", - "570 285 absorption 0.000112 0.000006\n", - "571 285 scatter 0.017666 0.000425\n", - "572 286 absorption 0.000123 0.000011\n", - "573 286 scatter 0.017706 0.000597\n", - "574 287 absorption 0.000108 0.000011\n", - "575 287 scatter 0.017339 0.000664\n", - "576 288 absorption 0.000129 0.000011\n", - "577 288 scatter 0.018452 0.000523" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get a pandas dataframe for the distribcell tally data\n", "df = tally.get_pandas_dataframe(nuclides=False)\n", @@ -1704,415 +967,11 @@ }, { "cell_type": "code", - "execution_count": 34, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
level 1level 2level 3distribcellscoremeanstd. dev.
cellunivlatcelluniv
idididxyzidid
01000301000100010002100000absorption0.0001310.000014
11000301000100010002100000scatter0.0185820.000680
21000301000110010002100001absorption0.0002200.000023
31000301000110010002100001scatter0.0287110.001186
41000301000120010002100002absorption0.0002950.000022
51000301000120010002100002scatter0.0387820.001084
61000301000130010002100003absorption0.0003310.000022
71000301000130010002100003scatter0.0457720.001084
81000301000140010002100004absorption0.0004190.000026
91000301000140010002100004scatter0.0559750.001344
101000301000150010002100005absorption0.0005140.000024
111000301000150010002100005scatter0.0632890.001605
121000301000160010002100006absorption0.0005910.000027
131000301000160010002100006scatter0.0710110.002058
141000301000170010002100007absorption0.0006710.000036
151000301000170010002100007scatter0.0778910.001952
161000301000180010002100008absorption0.0007210.000031
171000301000180010002100008scatter0.0863930.001722
181000301000190010002100009absorption0.0007480.000033
191000301000190010002100009scatter0.0908610.001669
\n", - "
" - ], - "text/plain": [ - " level 1 level 2 level 3 distribcell score \\\n", - " cell univ lat cell univ \n", - " id id id x y z id id \n", - "0 10003 0 10001 0 0 0 10002 10000 0 absorption \n", - "1 10003 0 10001 0 0 0 10002 10000 0 scatter \n", - "2 10003 0 10001 1 0 0 10002 10000 1 absorption \n", - "3 10003 0 10001 1 0 0 10002 10000 1 scatter \n", - "4 10003 0 10001 2 0 0 10002 10000 2 absorption \n", - "5 10003 0 10001 2 0 0 10002 10000 2 scatter \n", - "6 10003 0 10001 3 0 0 10002 10000 3 absorption \n", - "7 10003 0 10001 3 0 0 10002 10000 3 scatter \n", - "8 10003 0 10001 4 0 0 10002 10000 4 absorption \n", - "9 10003 0 10001 4 0 0 10002 10000 4 scatter \n", - "10 10003 0 10001 5 0 0 10002 10000 5 absorption \n", - "11 10003 0 10001 5 0 0 10002 10000 5 scatter \n", - "12 10003 0 10001 6 0 0 10002 10000 6 absorption \n", - "13 10003 0 10001 6 0 0 10002 10000 6 scatter \n", - "14 10003 0 10001 7 0 0 10002 10000 7 absorption \n", - "15 10003 0 10001 7 0 0 10002 10000 7 scatter \n", - "16 10003 0 10001 8 0 0 10002 10000 8 absorption \n", - "17 10003 0 10001 8 0 0 10002 10000 8 scatter \n", - "18 10003 0 10001 9 0 0 10002 10000 9 absorption \n", - "19 10003 0 10001 9 0 0 10002 10000 9 scatter \n", - "\n", - " mean std. dev. \n", - " \n", - " \n", - "0 0.000131 0.000014 \n", - "1 0.018582 0.000680 \n", - "2 0.000220 0.000023 \n", - "3 0.028711 0.001186 \n", - "4 0.000295 0.000022 \n", - "5 0.038782 0.001084 \n", - "6 0.000331 0.000022 \n", - "7 0.045772 0.001084 \n", - "8 0.000419 0.000026 \n", - "9 0.055975 0.001344 \n", - "10 0.000514 0.000024 \n", - "11 0.063289 0.001605 \n", - "12 0.000591 0.000027 \n", - "13 0.071011 0.002058 \n", - "14 0.000671 0.000036 \n", - "15 0.077891 0.001952 \n", - "16 0.000721 0.000031 \n", - "17 0.086393 0.001722 \n", - "18 0.000748 0.000033 \n", - "19 0.090861 0.001669 " - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get a pandas dataframe for the distribcell tally data\n", "df = tally.get_pandas_dataframe(summary=su, nuclides=False)\n", @@ -2123,97 +982,11 @@ }, { "cell_type": "code", - "execution_count": 35, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
meanstd. dev.
count289.000000289.000000
mean0.0004170.000020
std0.0002380.000008
min0.0000200.000003
25%0.0002140.000014
50%0.0003940.000019
75%0.0006270.000025
max0.0009150.000049
\n", - "
" - ], - "text/plain": [ - " mean std. dev.\n", - " \n", - " \n", - "count 289.000000 289.000000\n", - "mean 0.000417 0.000020\n", - "std 0.000238 0.000008\n", - "min 0.000020 0.000003\n", - "25% 0.000214 0.000014\n", - "50% 0.000394 0.000019\n", - "75% 0.000627 0.000025\n", - "max 0.000915 0.000049" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Show summary statistics for absorption distribcell tally data\n", "absorption = df[df['score'] == 'absorption']\n", @@ -2232,19 +1005,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mann-Whitney Test p-value: 0.498462484897\n" - ] - } - ], + "outputs": [], "source": [ "# Extract tally data from pins in the pins divided along y=x diagonal \n", "multi_index = ('level 2', 'lat',)\n", @@ -2270,19 +1035,11 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mann-Whitney Test p-value: 1.61253828675e-41\n" - ] - } - ], + "outputs": [], "source": [ "# Extract tally data from pins in the pins divided along y=-x diagonal\n", "multi_index = ('level 2', 'lat',)\n", @@ -2306,43 +1063,11 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__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", - "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\norlkyRKeP3+erVp1IWCgqI78DIFVDAuLossVo41pQ4rqwy2ZmHgjbbYuFKvqVlBVI1i3bnMajRMo\nZofbaLNF+F0sBAtI4yGNR2kSSvozMzO5Zs0aLlmyxFtp9Vr1d+p0K4HV9ATQgXrU6XoQeJ6KUpuT\nJz9T+EEoTugNG7amw5FIp7Mbw8NjvUUbe/S4g6Jib87VvO+Vty8e/WFh0QS20RPstdsT+eGHH+bZ\nfvPmzbTbI+l01qfVGsYFCxbx6aefZnh4RZrN5Vi/fjMeOnTIu/2MGTNoMPhWEn6Fwp1zG1W1OgcO\nHMLGjdvSZqtB4f6qR1Ep+B1GR1fzHmfQoH9RBNQ9x9nJ6OjqHDz4Ier1U7TnXtBmEdna1buFgIF3\n331/ntldcnIyq1evR5OpEnW6kVTVBD722JMFjvfp06dpt0dSuKNI4FM6nVH866+/Cv1fpaamagH5\ntfQ013I6b+XUqVO928yf/xLNZjtVNZ7h4bHctWuX9n/0XTDxGZs06cixY59gtWpN2Lx5F37zzTdM\nSUlhixadaTCYGB5eievWrStUUyCANB6hbTwkocWQIcNpNI7TTgbrKPzkHjdOCo1Ga5FWy0yfPkOr\ntOqpwjuPN97YgyS5ePF/tF7tRyiqurbnlCkFNzM6cuQIq1Spr13lhtFqrcpu3frmWVKbkZGhXUF7\nakMdpF7vok7XjqKrYWMCbVmhQrw3nrN//35tietSAl9RUdry3nvv56pVq7h161a63W5mZmZy8uTJ\ntFq7Myf/xU293uTN5J816wXabN00N46bJtNY3nrrXdoJdixFwPlhiuCzZzx3sly52AI/d3Z2Nleu\nXMlp06YV2nHw66+/ptOZ6HMiJ53O+oW23RVFJQdTLCvvps3Q3qaiVMxTBTctLY0HDx70xnPuvXeY\nj2EkdboF7Nbt9qu+V0kCaTyk8ZCUHCdOnGB0dDXa7T1osTQh0NXnhJRJo9FapFav9933EP0bS33P\nuLi6JMVJZOLEKbTZXLRY7HzwwVFXNUgJCU1pMEzTTtxfetu65ubo0aNUlGif9/yGQGXm5FecI+Ck\n3d6aGzdu9O63fft2tmnTnbVrt+SkSc/kuxJo69atVNUqFKu1xFV2eHis94R45coVdu9+G222GNrt\nNVizZmOePHmSnTr1pEgMbEaxuEClwdCLOt0TVJQYLl/+Zp73uh6OHDmi9WPxFMg8SoslLE/9sNx8\n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\nRCKRSCSB5/8ByMyfADZGvh4AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Extract the scatter tally data from pandas\n", "scatter = df[df['score'] == 'scatter']\n", @@ -2355,32 +1080,11 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Plot a histogram and kernel density estimate for the scattering rates\n", "scatter['mean'].plot(kind='hist', bins=25)\n", diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 7c1269c67..22e9baf09 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -353,7 +353,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDA6NTg6MTItMDQ6MDAd0a7wAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAwOjU4OjEyLTA0OjAwbIwWTAAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDE6MDM6MzQtMDQ6MDBoBRKHAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAxOjAzOjM0LTA0OjAwGViqOwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -419,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "collapsed": true }, @@ -438,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true @@ -465,7 +465,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 00:58:12\n", + " Date/Time: 2015-10-03 01:03:34\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -525,116 +525,8 @@ " 31/1 1.02685 1.03706 +/- 0.00352\n", " 32/1 1.03458 1.03695 +/- 0.00335\n", " 33/1 1.05243 1.03762 +/- 0.00328\n", - " 34/1 1.05717 1.03843 +/- 0.00324\n", - " 35/1 1.07396 1.03985 +/- 0.00342\n", - " 36/1 1.01690 1.03897 +/- 0.00340\n", - " 37/1 1.03340 1.03877 +/- 0.00328\n", - " 38/1 1.04153 1.03886 +/- 0.00316\n", - " 39/1 1.01971 1.03820 +/- 0.00312\n", - " 40/1 1.01491 1.03743 +/- 0.00311\n", - " 41/1 1.02779 1.03712 +/- 0.00303\n", - " 42/1 1.03047 1.03691 +/- 0.00294\n", - " 43/1 1.02305 1.03649 +/- 0.00288\n", - " 44/1 1.07854 1.03773 +/- 0.00305\n", - " 45/1 1.04412 1.03791 +/- 0.00297\n", - " 46/1 1.05139 1.03828 +/- 0.00291\n", - " 47/1 1.05357 1.03870 +/- 0.00286\n", - " 48/1 1.06435 1.03937 +/- 0.00287\n", - " 49/1 1.02632 1.03904 +/- 0.00281\n", - " 50/1 1.05201 1.03936 +/- 0.00276\n", - " 51/1 1.04582 1.03952 +/- 0.00270\n", - " 52/1 1.02056 1.03907 +/- 0.00267\n", - " 53/1 1.06448 1.03966 +/- 0.00267\n", - " 54/1 1.03609 1.03958 +/- 0.00261\n", - " 55/1 1.02701 1.03930 +/- 0.00257\n", - " 56/1 1.04865 1.03950 +/- 0.00252\n", - " 57/1 1.06310 1.04000 +/- 0.00252\n", - " 58/1 1.02975 1.03979 +/- 0.00247\n", - " 59/1 1.03922 1.03978 +/- 0.00242\n", - " 60/1 1.07259 1.04043 +/- 0.00246\n", - " 61/1 1.04555 1.04053 +/- 0.00242\n", - " 62/1 1.01950 1.04013 +/- 0.00240\n", - " 63/1 1.04618 1.04024 +/- 0.00236\n", - " 64/1 1.02489 1.03996 +/- 0.00233\n", - " 65/1 1.06850 1.04048 +/- 0.00235\n", - " 66/1 1.03623 1.04040 +/- 0.00231\n", - " 67/1 0.99892 1.03967 +/- 0.00238\n", - " 68/1 1.05557 1.03995 +/- 0.00236\n", - " 69/1 1.01211 1.03948 +/- 0.00236\n", - " 70/1 1.04679 1.03960 +/- 0.00233\n", - " 71/1 1.03461 1.03952 +/- 0.00229\n", - " 72/1 1.01993 1.03920 +/- 0.00227\n", - " 73/1 1.04742 1.03933 +/- 0.00224\n", - " 74/1 1.05269 1.03954 +/- 0.00222\n", - " 75/1 1.05696 1.03981 +/- 0.00220\n", - " 76/1 1.05904 1.04010 +/- 0.00218\n", - " 77/1 1.05930 1.04039 +/- 0.00217\n", - " 78/1 1.03375 1.04029 +/- 0.00214\n", - " 79/1 1.07044 1.04073 +/- 0.00215\n", - " 80/1 1.04144 1.04074 +/- 0.00212\n", - " 81/1 1.06296 1.04105 +/- 0.00212\n", - " 82/1 1.04630 1.04112 +/- 0.00209\n", - " 83/1 1.03772 1.04108 +/- 0.00206\n", - " 84/1 1.03774 1.04103 +/- 0.00203\n", - " 85/1 1.03984 1.04101 +/- 0.00200\n", - " 86/1 1.03040 1.04087 +/- 0.00198\n", - " 87/1 1.03484 1.04080 +/- 0.00196\n", - " 88/1 1.03820 1.04076 +/- 0.00193\n", - " 89/1 1.04654 1.04084 +/- 0.00191\n", - " 90/1 1.03377 1.04075 +/- 0.00189\n", - " 91/1 1.03370 1.04066 +/- 0.00187\n", - " 92/1 1.04172 1.04067 +/- 0.00184\n", - " 93/1 1.04945 1.04078 +/- 0.00182\n", - " 94/1 1.03360 1.04069 +/- 0.00181\n", - " 95/1 1.06547 1.04099 +/- 0.00181\n", - " 96/1 1.04340 1.04101 +/- 0.00179\n", - " 97/1 1.07502 1.04140 +/- 0.00181\n", - " 98/1 1.05391 1.04155 +/- 0.00179\n", - " 99/1 1.05622 1.04171 +/- 0.00178\n", - " 100/1 1.01519 1.04142 +/- 0.00179\n", - " Creating state point statepoint.100.h5...\n", - "\n", - " ===========================================================================\n", - " ======================> SIMULATION FINISHED <======================\n", - " ===========================================================================\n", - "\n", - "\n", - " =======================> TIMING STATISTICS <=======================\n", - "\n", - " Total time for initialization = 3.9800E-01 seconds\n", - " Reading cross sections = 9.2000E-02 seconds\n", - " Total time in simulation = 2.4145E+02 seconds\n", - " Time in transport only = 2.4139E+02 seconds\n", - " Time in inactive batches = 7.6900E+00 seconds\n", - " Time in active batches = 2.3376E+02 seconds\n", - " Time synchronizing fission bank = 1.2000E-02 seconds\n", - " Sampling source sites = 8.0000E-03 seconds\n", - " SEND/RECV source sites = 3.0000E-03 seconds\n", - " Time accumulating tallies = 3.4000E-02 seconds\n", - " Total time for finalization = 1.7000E-01 seconds\n", - " Total time elapsed = 2.4203E+02 seconds\n", - " Calculation Rate (inactive) = 6501.95 neutrons/second\n", - " Calculation Rate (active) = 1925.07 neutrons/second\n", - "\n", - " ============================> RESULTS <============================\n", - "\n", - " k-effective (Collision) = 1.04100 +/- 0.00169\n", - " k-effective (Track-length) = 1.04142 +/- 0.00179\n", - " k-effective (Absorption) = 1.04380 +/- 0.00147\n", - " Combined k-effective = 1.04287 +/- 0.00130\n", - " Leakage Fraction = 0.00000 +/- 0.00000\n", - "\n" + " 34/1 1.05717 1.03843 +/- 0.00324\n" ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -658,7 +550,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true @@ -678,27 +570,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tmesh\t[10000]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t[u'flux', u'fission']\n", - "\tEstimator =\ttracklength\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "tally = sp.get_tally(scores=['flux'])\n", "print(tally)" @@ -713,33 +589,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[ 0.41271426, 0. ]],\n", - "\n", - " [[ 0.40846766, 0. ]],\n", - "\n", - " [[ 0.4112029 , 0. ]],\n", - "\n", - " ..., \n", - " [[ 0.41437289, 0. ]],\n", - "\n", - " [[ 0.41376468, 0. ]],\n", - "\n", - " [[ 0.41312074, 0. ]]])" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "tally.sum" ] @@ -753,52 +607,11 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(10000, 1, 2)\n" - ] - }, - { - "data": { - "text/plain": [ - "(array([[[ 0.00458571, 0. ]],\n", - " \n", - " [[ 0.00453853, 0. ]],\n", - " \n", - " [[ 0.00456892, 0. ]],\n", - " \n", - " ..., \n", - " [[ 0.00460414, 0. ]],\n", - " \n", - " [[ 0.00459739, 0. ]],\n", - " \n", - " [[ 0.00459023, 0. ]]]),\n", - " array([[[ 2.02702426e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.77108625e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.79568064e-05, 0.00000000e+00]],\n", - " \n", - " ..., \n", - " [[ 1.83114148e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.69970626e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.92143217e-05, 0.00000000e+00]]]))" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "print(tally.mean.shape)\n", "(tally.mean, tally.std_dev)" @@ -813,27 +626,11 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tmesh\t[10000]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t[u'flux']\n", - "\tEstimator =\ttracklength\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "flux = tally.get_slice(scores=['flux'])\n", "fission = tally.get_slice(scores=['fission'])\n", @@ -849,7 +646,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, @@ -863,32 +660,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = plt.subplot(121)\n", "fig.imshow(flux.mean)\n", @@ -905,22 +681,11 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Determine relative error\n", "relative_error = np.zeros_like(flux.std_dev)\n", @@ -947,29 +712,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [-0.5991379733562734, 0.6213299732428319, -0.5049581697849825], 1.4308796774550836),\n", - " (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [0.6943502674814661, -0.18996972225593808, 0.694110373553384], 1.8499326750790277),\n", - " (1.0, [-0.2283457014858208, -0.3149356437736135, -0.6287339985223156], [0.22841158666373973, -0.9428738529578353, 0.24252225565130936], 2.8993105331976654),\n", - " ...,\n", - " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [0.871391386295745, 0.3866181159860615, 0.30199914615933615], 2.2329770939373517),\n", - " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622),\n", - " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622)], \n", - " dtype=[('wgt', '" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create log-spaced energy bins from 1 keV to 100 MeV\n", "energy_bins = np.logspace(-3,1)\n", @@ -1071,32 +778,11 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(-0.5, 0.5)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.quiver(sp.source['xyz'][:,0], sp.source['xyz'][:,1],\n", " sp.source['uvw'][:,0], sp.source['uvw'][:,1],\n", diff --git a/openmc/tallies.py b/openmc/tallies.py index 63ba4df07..dcf67b485 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2379,15 +2379,13 @@ class Tally(object): for filter_bin in filter_bins[i]: bin_index = filter.get_bin_index(filter_bin) if filter_type in ['energy', 'energyout']: - bin_indices.append(bin_index) - bin_indices.append(bin_index+1) + bin_indices.extend([bin_index, bin_index+1]) elif filter_type == 'distribcell': bin_indices.append(0) else: bin_indices.append(bin_index) - new_bins = filter.bins[bin_indices] - filter.bins = new_bins + filter.bins = filter.bins[bin_indices] filter.num_bins = len(filter_bins[i]) # Correct each Filter's stride @@ -2478,7 +2476,6 @@ class Tally(object): # Accumulate this Tally slice into the Tally sum tally_sum += tally_slice - # FIXME: test if this works for filter for filter_type in summed_filters: filters = summed_filters[filter_type] for i in range(1, len(filters)): @@ -2487,74 +2484,6 @@ class Tally(object): return tally_sum - def tile_filter(self, new_filter): - """Combines filters, scores and nuclides with another tally. - - This is a helper method for the tally arithmetic methods. The filters, - scores and nuclides from both tallies are enumerated into all possible - combinations and expressed as CrossFilter, CrossScore and - CrossNuclide objects in the new derived tally. - - Parameters - ---------- - other : Tally - The tally on the right hand side of the outer product - binary_op : {'+', '-', '*', '/', '^'} - The binary operation in the outer product - - Returns - ------- - Tally - A new Tally that is the outer product with this one. - - """ - - cv.check_type('new_filter', new_filter, Filter) - - if new_filter in self.filters: - msg = 'Unable to tile Tally ID="{0}" which already ' \ - 'contains a "{1}" filter'.format(self.id, new_filter.type) - raise ValueError(msg) - - new_tally = copy.deepcopy(self) - new_tally.add_filter(new_filter) - - num_filter_bins = new_tally.num_filter_bins - num_nuclides = new_tally.num_nuclides - num_score_bins = new_tally.num_score_bins - new_shape = (num_filter_bins, num_nuclides, num_score_bins) - - repeat_indices = np.arange(0, new_tally.num_bins, new_filter.num_bins) - repeat_factor = new_filter.num_bins - - if self.sum is not None: - new_tally._sum = np.zeros(new_shape, dtype=np.float64) - if self.sum_sq is not None: - new_tally._sum_sq = np.zeros(new_shape, dtype=np.float64) - if self.mean is not None: - new_tally._mean = np.zeros(new_shape, dtype=np.float64) - if self.std_dev is not None: - new_tally._std_dev = np.zeros(new_shape, dtype=np.float64) - - for i in range(repeat_factor): - if self.sum is not None: - new_tally._sum[repeat_indices+i, :, :] = self.sum - if self.sum_sq is not None: - new_tally._sum_sq[repeat_indices+i, :, :] = self.sum_sq - if self.mean is not None: - new_tally._mean[repeat_indices+i, :, :] = self.mean - if self.std_dev is not None: - new_tally._std_dev[repeat_indices+i, :, :] = self.std_dev - - # Correct each Filter's stride - stride = new_tally.num_nuclides * new_tally.num_score_bins - for filter in reversed(new_tally.filters): - filter.stride = stride - stride *= filter.num_bins - - return new_tally - - def diagonalize_filter(self, new_filter): """Combines filters, scores and nuclides with another tally. From 352c0e919f42c625923bda365586e470f2e351d6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 01:45:51 -0400 Subject: [PATCH 067/130] Updated docstring for Tally.diagonalize_filter(...) routine --- .../examples/pandas-dataframes.ipynb | 28 +- .../pythonapi/examples/post-processing.ipynb | 364 ++++++++++++++++-- .../pythonapi/examples/tally-arithmetic.ipynb | 32 +- openmc/cross.py | 1 - openmc/filter.py | 1 - openmc/mgxs/mgxs.py | 36 -- openmc/tallies.py | 79 ++-- openmc/temp.py | 12 - 8 files changed, 405 insertions(+), 148 deletions(-) delete mode 100644 openmc/temp.py diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 2267703c4..70ff46406 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -385,7 +385,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAxOjAz\nOjQwLTA0OjAwlo8/jQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMTowMzo0MC0wNDow\nMOfShzEAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAxOjE0\nOjM0LTA0OjAwS1fWPgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMToxNDozNC0wNDow\nMDoKboIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -576,7 +576,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 01:03:41\n", + " Date/Time: 2015-10-03 01:14:34\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -644,20 +644,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 7.5300E-01 seconds\n", - " Reading cross sections = 1.6900E-01 seconds\n", - " Total time in simulation = 2.0057E+01 seconds\n", - " Time in transport only = 1.9977E+01 seconds\n", - " Time in inactive batches = 2.1180E+00 seconds\n", - " Time in active batches = 1.7939E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Total time for initialization = 1.2000E+00 seconds\n", + " Reading cross sections = 2.5000E-01 seconds\n", + " Total time in simulation = 1.8967E+01 seconds\n", + " Time in transport only = 1.8921E+01 seconds\n", + " Time in inactive batches = 2.8760E+00 seconds\n", + " Time in active batches = 1.6091E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", " Sampling source sites = 3.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 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 = 0.0000E+00 seconds\n", - " Total time elapsed = 2.0825E+01 seconds\n", - " Calculation Rate (inactive) = 5901.79 neutrons/second\n", - " Calculation Rate (active) = 2090.42 neutrons/second\n", + " Total time elapsed = 2.0192E+01 seconds\n", + " Calculation Rate (inactive) = 4346.31 neutrons/second\n", + " Calculation Rate (active) = 2330.50 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 22e9baf09..7c5508e95 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -419,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -438,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": false, "scrolled": true @@ -525,8 +525,116 @@ " 31/1 1.02685 1.03706 +/- 0.00352\n", " 32/1 1.03458 1.03695 +/- 0.00335\n", " 33/1 1.05243 1.03762 +/- 0.00328\n", - " 34/1 1.05717 1.03843 +/- 0.00324\n" + " 34/1 1.05717 1.03843 +/- 0.00324\n", + " 35/1 1.07396 1.03985 +/- 0.00342\n", + " 36/1 1.01690 1.03897 +/- 0.00340\n", + " 37/1 1.03340 1.03877 +/- 0.00328\n", + " 38/1 1.04153 1.03886 +/- 0.00316\n", + " 39/1 1.01971 1.03820 +/- 0.00312\n", + " 40/1 1.01491 1.03743 +/- 0.00311\n", + " 41/1 1.02779 1.03712 +/- 0.00303\n", + " 42/1 1.03047 1.03691 +/- 0.00294\n", + " 43/1 1.02305 1.03649 +/- 0.00288\n", + " 44/1 1.07854 1.03773 +/- 0.00305\n", + " 45/1 1.04412 1.03791 +/- 0.00297\n", + " 46/1 1.05139 1.03828 +/- 0.00291\n", + " 47/1 1.05357 1.03870 +/- 0.00286\n", + " 48/1 1.06435 1.03937 +/- 0.00287\n", + " 49/1 1.02632 1.03904 +/- 0.00281\n", + " 50/1 1.05201 1.03936 +/- 0.00276\n", + " 51/1 1.04582 1.03952 +/- 0.00270\n", + " 52/1 1.02056 1.03907 +/- 0.00267\n", + " 53/1 1.06448 1.03966 +/- 0.00267\n", + " 54/1 1.03609 1.03958 +/- 0.00261\n", + " 55/1 1.02701 1.03930 +/- 0.00257\n", + " 56/1 1.04865 1.03950 +/- 0.00252\n", + " 57/1 1.06310 1.04000 +/- 0.00252\n", + " 58/1 1.02975 1.03979 +/- 0.00247\n", + " 59/1 1.03922 1.03978 +/- 0.00242\n", + " 60/1 1.07259 1.04043 +/- 0.00246\n", + " 61/1 1.04555 1.04053 +/- 0.00242\n", + " 62/1 1.01950 1.04013 +/- 0.00240\n", + " 63/1 1.04618 1.04024 +/- 0.00236\n", + " 64/1 1.02489 1.03996 +/- 0.00233\n", + " 65/1 1.06850 1.04048 +/- 0.00235\n", + " 66/1 1.03623 1.04040 +/- 0.00231\n", + " 67/1 0.99892 1.03967 +/- 0.00238\n", + " 68/1 1.05557 1.03995 +/- 0.00236\n", + " 69/1 1.01211 1.03948 +/- 0.00236\n", + " 70/1 1.04679 1.03960 +/- 0.00233\n", + " 71/1 1.03461 1.03952 +/- 0.00229\n", + " 72/1 1.01993 1.03920 +/- 0.00227\n", + " 73/1 1.04742 1.03933 +/- 0.00224\n", + " 74/1 1.05269 1.03954 +/- 0.00222\n", + " 75/1 1.05696 1.03981 +/- 0.00220\n", + " 76/1 1.05904 1.04010 +/- 0.00218\n", + " 77/1 1.05930 1.04039 +/- 0.00217\n", + " 78/1 1.03375 1.04029 +/- 0.00214\n", + " 79/1 1.07044 1.04073 +/- 0.00215\n", + " 80/1 1.04144 1.04074 +/- 0.00212\n", + " 81/1 1.06296 1.04105 +/- 0.00212\n", + " 82/1 1.04630 1.04112 +/- 0.00209\n", + " 83/1 1.03772 1.04108 +/- 0.00206\n", + " 84/1 1.03774 1.04103 +/- 0.00203\n", + " 85/1 1.03984 1.04101 +/- 0.00200\n", + " 86/1 1.03040 1.04087 +/- 0.00198\n", + " 87/1 1.03484 1.04080 +/- 0.00196\n", + " 88/1 1.03820 1.04076 +/- 0.00193\n", + " 89/1 1.04654 1.04084 +/- 0.00191\n", + " 90/1 1.03377 1.04075 +/- 0.00189\n", + " 91/1 1.03370 1.04066 +/- 0.00187\n", + " 92/1 1.04172 1.04067 +/- 0.00184\n", + " 93/1 1.04945 1.04078 +/- 0.00182\n", + " 94/1 1.03360 1.04069 +/- 0.00181\n", + " 95/1 1.06547 1.04099 +/- 0.00181\n", + " 96/1 1.04340 1.04101 +/- 0.00179\n", + " 97/1 1.07502 1.04140 +/- 0.00181\n", + " 98/1 1.05391 1.04155 +/- 0.00179\n", + " 99/1 1.05622 1.04171 +/- 0.00178\n", + " 100/1 1.01519 1.04142 +/- 0.00179\n", + " Creating state point statepoint.100.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 4.1100E-01 seconds\n", + " Reading cross sections = 1.0300E-01 seconds\n", + " Total time in simulation = 2.6639E+02 seconds\n", + " Time in transport only = 2.6632E+02 seconds\n", + " Time in inactive batches = 1.0721E+01 seconds\n", + " Time in active batches = 2.5566E+02 seconds\n", + " Time synchronizing fission bank = 1.8000E-02 seconds\n", + " Sampling source sites = 1.0000E-02 seconds\n", + " SEND/RECV source sites = 6.0000E-03 seconds\n", + " Time accumulating tallies = 1.9000E-02 seconds\n", + " Total time for finalization = 2.1800E-01 seconds\n", + " Total time elapsed = 2.6703E+02 seconds\n", + " Calculation Rate (inactive) = 4663.74 neutrons/second\n", + " Calculation Rate (active) = 1760.12 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.04100 +/- 0.00169\n", + " k-effective (Track-length) = 1.04142 +/- 0.00179\n", + " k-effective (Absorption) = 1.04380 +/- 0.00147\n", + " Combined k-effective = 1.04287 +/- 0.00130\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -550,7 +658,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true @@ -570,11 +678,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10000\n", + "\tName =\t\n", + "\tFilters =\t\n", + " \t\tmesh\t[10000]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'flux', u'fission']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], "source": [ "tally = sp.get_tally(scores=['flux'])\n", "print(tally)" @@ -589,11 +713,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[ 0.41271426, 0. ]],\n", + "\n", + " [[ 0.40846766, 0. ]],\n", + "\n", + " [[ 0.4112029 , 0. ]],\n", + "\n", + " ..., \n", + " [[ 0.41437289, 0. ]],\n", + "\n", + " [[ 0.41376468, 0. ]],\n", + "\n", + " [[ 0.41312074, 0. ]]])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "tally.sum" ] @@ -607,11 +753,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(10000, 1, 2)\n" + ] + }, + { + "data": { + "text/plain": [ + "(array([[[ 0.00458571, 0. ]],\n", + " \n", + " [[ 0.00453853, 0. ]],\n", + " \n", + " [[ 0.00456892, 0. ]],\n", + " \n", + " ..., \n", + " [[ 0.00460414, 0. ]],\n", + " \n", + " [[ 0.00459739, 0. ]],\n", + " \n", + " [[ 0.00459023, 0. ]]]),\n", + " array([[[ 2.02702426e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.77108625e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.79568064e-05, 0.00000000e+00]],\n", + " \n", + " ..., \n", + " [[ 1.83114148e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.69970626e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.92143217e-05, 0.00000000e+00]]]))" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "print(tally.mean.shape)\n", "(tally.mean, tally.std_dev)" @@ -626,11 +813,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10000\n", + "\tName =\t\n", + "\tFilters =\t\n", + " \t\tmesh\t[10000]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'flux']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], "source": [ "flux = tally.get_slice(scores=['flux'])\n", "fission = tally.get_slice(scores=['fission'])\n", @@ -646,7 +849,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -660,11 +863,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "fig = plt.subplot(121)\n", "fig.imshow(flux.mean)\n", @@ -681,11 +905,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Determine relative error\n", "relative_error = np.zeros_like(flux.std_dev)\n", @@ -712,11 +947,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([ (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [-0.5991379733562734, 0.6213299732428319, -0.5049581697849825], 1.4308796774550836),\n", + " (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [0.6943502674814661, -0.18996972225593808, 0.694110373553384], 1.8499326750790277),\n", + " (1.0, [-0.2283457014858208, -0.3149356437736135, -0.6287339985223156], [0.22841158666373973, -0.9428738529578353, 0.24252225565130936], 2.8993105331976654),\n", + " ...,\n", + " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [0.871391386295745, 0.3866181159860615, 0.30199914615933615], 2.2329770939373517),\n", + " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622),\n", + " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622)], \n", + " dtype=[('wgt', '" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create log-spaced energy bins from 1 keV to 100 MeV\n", "energy_bins = np.logspace(-3,1)\n", @@ -778,11 +1071,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 0.5)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.quiver(sp.source['xyz'][:,0], sp.source['xyz'][:,1],\n", " sp.source['uvw'][:,0], sp.source['uvw'][:,1],\n", diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index f3f2c52f1..5960ac111 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -369,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDE6MDM6MjktMDQ6MDDFeHPZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAxOjAzOjI5LTA0OjAwtCXLZQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDE6MTQ6MjctMDQ6MDC2Fcw9AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAxOjE0OjI3LTA0OjAwx0h0gQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -580,7 +580,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 01:03:29\n", + " Date/Time: 2015-10-03 01:14:27\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -636,20 +636,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.1300E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 2.1398E+01 seconds\n", - " Time in transport only = 2.1378E+01 seconds\n", - " Time in inactive batches = 2.0260E+00 seconds\n", - " Time in active batches = 1.9372E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 0.0000E+00 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 3.0000E-03 seconds\n", - " Total time elapsed = 2.1823E+01 seconds\n", - " Calculation Rate (inactive) = 6169.79 neutrons/second\n", - " Calculation Rate (active) = 1935.78 neutrons/second\n", + " Total time for initialization = 6.7400E-01 seconds\n", + " Reading cross sections = 1.5200E-01 seconds\n", + " Total time in simulation = 2.4330E+01 seconds\n", + " Time in transport only = 2.4308E+01 seconds\n", + " Time in inactive batches = 2.4220E+00 seconds\n", + " Time in active batches = 2.1908E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 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 = 1.0000E-03 seconds\n", + " Total time elapsed = 2.5018E+01 seconds\n", + " Calculation Rate (inactive) = 5161.02 neutrons/second\n", + " Calculation Rate (active) = 1711.70 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", diff --git a/openmc/cross.py b/openmc/cross.py index f361313b3..975d5cb36 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -417,7 +417,6 @@ class CrossFilter(object): ---------- data_size : Integral The total number of bins in the tally corresponding to this filter - summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric diff --git a/openmc/filter.py b/openmc/filter.py index 9735d95bb..3bc0c866e 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -476,7 +476,6 @@ class Filter(object): ---------- data_size : Integral The total number of bins in the tally corresponding to this filter - summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index fd696ff72..e6ea7564c 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -326,13 +326,10 @@ class MultiGroupXS(object): ---------- scores : Iterable of str Scores for each tally - filters : Iterable of tuple of Filter Tuples of non-spatial domain filters for each tally - keys : Iterable of str Key string used to store each tally in the tallies dictionary - estimator : {'analog' or 'tracklength'} Type of estimator to use for each tally @@ -450,23 +447,18 @@ class MultiGroupXS(object): ---------- groups : Iterable of Integral or 'all' Energy groups of interest - subdomains : Iterable of Integral or 'all' Subdomain IDs of interest - nuclides : Iterable of str or 'all' or 'sum' A list of nuclide name strings (e.g., ['U-235', 'U-238']). The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns - order_groups: {'increasing', 'decreasing'} Return the cross section indexed according to increasing (default) or decreasing energy groups (decreasing or increasing energies) - value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -721,14 +713,12 @@ class MultiGroupXS(object): ---------- subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report - 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' (default) 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. - xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns @@ -820,13 +810,10 @@ class MultiGroupXS(object): ---------- filename : str Filename for the HDF5 file (default is 'mgxs') - directory : str Directory for the HDF5 file (default is 'mgxs') - xs_type: {'macro' or 'micro'} Store the macro or micro cross section in units of cm^-1 or barns - append : boolean If true, appends to an existing HDF5 file with the same filename directory (if one exists) @@ -940,16 +927,12 @@ class MultiGroupXS(object): ---------- filename : str Filename for the exported file (default is 'mgxs') - directory : str Directory for the exported file (default is 'mgxs') - format : {'csv', 'excel', 'pickle', 'latex'} The format for the exported data file - groups : Iterable of Integral or 'all' Energy groups of interest - xs_type: {'macro' or 'micro'} Store the macro or micro cross section in units of cm^-1 or barns @@ -1014,17 +997,14 @@ class MultiGroupXS(object): ---------- groups : Iterable of Integral or 'all' Energy groups of interest - 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']). The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} Return macro or micro cross section in units of cm^-1 or barns - summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric @@ -1443,25 +1423,19 @@ class ScatterMatrixXS(MultiGroupXS): ---------- in_groups : Iterable of Integral or 'all' Incoming energy groups of interest - out_groups : Iterable of Integral or 'all' Outgoing energy groups of interest - subdomains : Iterable of Integral or 'all' Subdomain IDs of interest - nuclides : Iterable of str or 'all' or 'sum' A list of nuclide name strings (e.g., ['U-235', 'U-238']). The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns - xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns - value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -1576,14 +1550,12 @@ class ScatterMatrixXS(MultiGroupXS): ---------- subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report - 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' (default) 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. - xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns @@ -1756,23 +1728,18 @@ class Chi(MultiGroupXS): ---------- groups : Iterable of Integral or 'all' Energy groups of interest - subdomains : Iterable of Integral or 'all' Subdomain IDs of interest - nuclides : Iterable of str or 'all' or 'sum' A list of nuclide name strings (e.g., ['U-235', 'U-238']). The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns - xs_type: {'macro' or 'micro'} This parameter is not relevant for chi but is included here to mirror the parent MultiGroupXS.get_xs(...) class method - value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted @@ -1888,17 +1855,14 @@ class Chi(MultiGroupXS): ---------- groups : Iterable of Integral or 'all' Energy groups of interest - 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']). The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} Return macro or micro cross section in units of cm^-1 or barns - summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric diff --git a/openmc/tallies.py b/openmc/tallies.py index dcf67b485..3e0d70409 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -742,7 +742,6 @@ class Tally(object): ---------- filter_type : str The type of Filter (e.g., 'cell', 'energy', etc.) - filter_bin : Integral or tuple The bin is an integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. The bin is an integer for the @@ -854,7 +853,6 @@ class Tally(object): filters : list of str A list of filter type strings (e.g., ['mesh', 'energy']; default is []) - filter_bins : list of Iterables A list of the filter bins corresponding to the filter_types parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin @@ -1018,11 +1016,9 @@ class Tally(object): scores : list of str A list of one or more score strings (e.g., ['absorption', 'nu-fission']; default is []) - filters : list of str A list of filter type strings (e.g., ['mesh', 'energy']; default is []) - filter_bins : list of Iterables A list of the filter bins corresponding to the filter_types parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin @@ -1034,11 +1030,9 @@ class Tally(object): 3-tuple for 'mesh' filters corresponding to the mesh cell of interest. The order of the bins in the list must correspond to the filter_types parameter. - nuclides : list of str A list of nuclide name strings (e.g., ['U-235', 'U-238']; 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 @@ -1112,13 +1106,10 @@ class Tally(object): ---------- filters : bool Include columns with filter bin information (default is True). - nuclides : bool Include columns with nuclide bin information (default is True). - scores : bool Include columns with score bin information (default is True). - summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric @@ -1283,14 +1274,11 @@ class Tally(object): ---------- filename : str The name of the file for the results (default is 'tally-results') - directory : str The name of the directory for the results (default is '.') - format : str The format for the exported file - HDF5 ('hdf5', default) and Python pickle ('pkl') files are supported - append : bool Whether or not to append the results to the file (default is True) @@ -2274,14 +2262,12 @@ class Tally(object): Parameters ---------- - scores : list + scores : list of str A list of one or more score strings (e.g., ['absorption', 'nu-fission']; default is []) - - filters : list + filters : list of str A list of filter type strings (e.g., ['mesh', 'energy']; default is []) - filter_bins : list of Iterables A list of the filter bins corresponding to the filter_types parameter (e.g., [(1,), (0., 0.625e-6)]; default is []). Each bin @@ -2293,8 +2279,7 @@ class Tally(object): 3-tuple for 'mesh' filters corresponding to the mesh cell of interest. The order of the bins in the list must correspond to the filter_types parameter. - - nuclides : list + nuclides : list of str A list of nuclide name strings (e.g., ['U-235', 'U-238']; default is []) @@ -2398,25 +2383,24 @@ class Tally(object): def summation(self, scores=[], filter_type=None, filter_bins=[], nuclides=[]): - """Build a sliced tally for the specified filter bins, nuclides, scores. + """Vectorized sum of tally data across scores, filter bins and/or + nuclides using tally addition. - This method constructs a new tally to encapsulate a subset of the data - represented by this tally. The subset of data to include in the tally - slice is determined by the scores, filter bins and nuclides specified + This method constructs a new tally to encapsulate the sum of the data + represented by the summation of the data in this tally. The tally data + sum is determined by the scores, filter bins and nuclides specified in the input parameters. Parameters ---------- - scores : list + scores : list of str A list of one or more score strings to sum across (e.g., ['absorption', 'nu-fission']; default is []) - filter_type : str A filter type string (e.g., 'cell', 'energy') corresponding to the filter bins to sum across - filter_bins : Iterable of Integral or tuple - A list of the filter bins corresponding to the filters parameter + A list of the filter bins corresponding to the filter_type parameter Each bin in the list is the integer ID for 'material', 'surface', 'cell', 'cellborn', and 'universe' Filters. Each bin is an integer for the cell instance ID for 'distribcell Filters. Each bin is a @@ -2424,8 +2408,7 @@ class Tally(object): to the energy boundaries of the bin of interest. Each bin is an (x,y,z) 3-tuple for 'mesh' filters corresponding to the mesh cell of interest. - - nuclides : list + nuclides : list of str A list of nuclide name strings to sum across (e.g., ['U-235', 'U-238']; default is []) @@ -2476,6 +2459,7 @@ class Tally(object): # Accumulate this Tally slice into the Tally sum tally_sum += tally_slice + # Add back the filter(s) which were summed across to derived tally for filter_type in summed_filters: filters = summed_filters[filter_type] for i in range(1, len(filters)): @@ -2485,24 +2469,25 @@ class Tally(object): return tally_sum def diagonalize_filter(self, new_filter): - """Combines filters, scores and nuclides with another tally. + """Diagonalize the tally data array along a new axis of filter bins. - This is a helper method for the tally arithmetic methods. The filters, - scores and nuclides from both tallies are enumerated into all possible - combinations and expressed as CrossFilter, CrossScore and - CrossNuclide objects in the new derived tally. + This is a helper method for the tally arithmetic methods. This routine + adds the new filter to a derived tally constructed copied from this one. + The data in the derived tally arrays is "diagonalized" along the bins in + the new filter. This functionality is used by the openmc.mgxs module; to + transport-correct scattering matrices by subtracting a 'scatter-P1' + reaction rate tally with an energy filter from an 'scatter' reaction + rate tally with both energy and energyout filters. Parameters ---------- - other : Tally - The tally on the right hand side of the outer product - binary_op : {'+', '-', '*', '/', '^'} - The binary operation in the outer product + new_filter : Filter + The filter along which to diagonalize the data in the new Returns ------- Tally - A new Tally outer that is the outer product with this one. + A new derived Tally with data diagaonalized along the new filter. """ @@ -2513,35 +2498,42 @@ class Tally(object): 'contains a "{1}" filter'.format(self.id, new_filter.type) raise ValueError(msg) + # Add the new filter to a copy of this Tally new_tally = copy.deepcopy(self) new_tally.add_filter(new_filter) + # Determine the shape of data in the new diagonalized Tally num_filter_bins = new_tally.num_filter_bins num_nuclides = new_tally.num_nuclides num_score_bins = new_tally.num_score_bins new_shape = (num_filter_bins, num_nuclides, num_score_bins) - diag_factor = self.num_filter_bins / new_filter.num_bins + # Determine "base" indices along the new "diagonal", and the factor + # by which the "base" indices should be repeated to account for all + # other filter bins in the diagonalized tally indices = np.arange(0, new_filter.num_bins**2, new_filter.num_bins+1) + diag_factor = self.num_filter_bins / new_filter.num_bins diag_indices = np.zeros(self.num_filter_bins, dtype=np.int) + # Determine the filter indices along the new "diagonal" for i in range(diag_factor): start = i * new_filter.num_bins end = (i+1) * new_filter.num_bins diag_indices[start:end] = indices + (i * new_filter.num_bins**2) + # Inject this Tally's data along the diagonal of the diagonalized Tally if self.sum is not None: new_tally._sum = np.zeros(new_shape, dtype=np.float64) - new_tally._sum[diag_indices, :self.num_nuclides, :self.num_scores] = self.sum + new_tally._sum[diag_indices, :, :] = self.sum if self.sum_sq is not None: new_tally._sum_sq = np.zeros(new_shape, dtype=np.float64) - new_tally._sum_sq[diag_indices, :self.num_nuclides, :self.num_scores] = self.sum_sq + new_tally._sum_sq[diag_indices, :, :] = self.sum_sq if self.mean is not None: new_tally._mean = np.zeros(new_shape, dtype=np.float64) - new_tally._mean[diag_indices, :self.num_nuclides, :self.num_scores] = self.mean + new_tally._mean[diag_indices, :, :] = self.mean if self.std_dev is not None: new_tally._std_dev = np.zeros(new_shape, dtype=np.float64) - new_tally._std_dev[diag_indices, :self.num_nuclides, :self.num_scores] = self.std_dev + new_tally._std_dev[diag_indices, :, :] = self.std_dev # Correct each Filter's stride stride = new_tally.num_nuclides * new_tally.num_score_bins @@ -2579,6 +2571,7 @@ class TalliesFile(object): ---------- tally : Tally Tally to add to file + merge : bool Indicate whether the tally should be merged with an existing tally, if possible. Defaults to False. diff --git a/openmc/temp.py b/openmc/temp.py deleted file mode 100644 index 91f608299..000000000 --- a/openmc/temp.py +++ /dev/null @@ -1,12 +0,0 @@ -from checkvalue import * -from checkvalue import _isinstance - -import numpy as np - -zs = np.zeros((2,)) - -print _isinstance(zs[0], Integral) -print _isinstance(zs[0], Real) -print _isinstance(zs[0], (Integral, Real)) - -print check_iterable_type('thing', zs, (Real, Integral)) From 3baaacda9990215fdc2969f06101b2fd988f35c8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 02:29:07 -0400 Subject: [PATCH 068/130] Cleaned up docstrings for MultiGroupXS class --- openmc/cross.py | 2 +- openmc/filter.py | 2 +- openmc/mgxs/mgxs.py | 110 +++++++++++++++++++++++++------------------- openmc/tallies.py | 24 +++++----- 4 files changed, 76 insertions(+), 62 deletions(-) diff --git a/openmc/cross.py b/openmc/cross.py index 975d5cb36..9b8a1d240 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -405,7 +405,7 @@ class CrossFilter(object): This method constructs a Pandas DataFrame object for the CrossFilter with columns annotated by filter bin information. This is a helper - method for the Tally.get_pandas_dataframe(...) routine. This method + method for the Tally.get_pandas_dataframe(...) method. This method recursively builds and concatenates Pandas DataFrames for the left and right filters and crossfilters. diff --git a/openmc/filter.py b/openmc/filter.py index 3bc0c866e..eaa30d30e 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -466,7 +466,7 @@ class Filter(object): This method constructs a Pandas DataFrame object for the filter with columns annotated by filter bin information. This is a helper method - for the Tally.get_pandas_dataframe(...) routine. + for the Tally.get_pandas_dataframe(...) method. This capability has been tested for Pandas >=0.13.1. However, it is recommended to use v0.16 or newer versions of Pandas since this method diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e6ea7564c..171718bc8 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -17,12 +17,14 @@ if sys.version_info[0] >= 3: # Supported domain types +# TODO: Implement Mesh domains DOMAIN_TYPES = ['cell', 'distribcell', 'universe', 'material'] -# Supported domain objects +# Supported domain classes +# TODO: Implement Mesh domains DOMAINS = [openmc.Cell, openmc.Universe, openmc.Material] @@ -48,7 +50,7 @@ class MultiGroupXS(object): If true, computes multi-group cross sections for each nuclide in domain name : str, optional Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC tallies.xml file. + tallies in OpenMC 'tallies.xml' file. Attributes ---------- @@ -92,6 +94,7 @@ class MultiGroupXS(object): self.name = name self.by_nuclide = by_nuclide + if domain_type is not None: self.domain_type = domain_type if domain is not None: @@ -213,7 +216,7 @@ class MultiGroupXS(object): Returns ------- - nuclides : list of str + list of str A list of the string names for each nuclide in the problem domain (e.g., ['U-235', 'U-238', 'O-16']) @@ -241,7 +244,7 @@ class MultiGroupXS(object): Returns ------- - density : Real + Real The atomic number density (atom/b-cm) for the nuclide of interest Raises @@ -279,7 +282,7 @@ class MultiGroupXS(object): Returns ------- - densities : ndarray of float + ndarray of Real An array of the atomic number densities (atom/b-cm) for each of the nuclides in the problem domain @@ -300,14 +303,14 @@ class MultiGroupXS(object): for nuclide in nuclides: densities[0] += self.get_nuclide_density(nuclide) - # Sum the atomic number densities for all nuclides + # Tabulate the atomic number densities for all nuclides elif nuclides == 'all': nuclides = self.get_all_nuclides() densities = np.zeros(self.num_nuclides, dtype=np.float) for i, nuclide in enumerate(nuclides): densities[i] += self.get_nuclide_density(nuclide) - # Store each nuclide's atomic number density in an array + # Tabulate the atomic number densities for each specified nuclide else: densities = np.zeros(len(nuclides), dtype=np.float) for i, nuclide in enumerate(nuclides): @@ -321,6 +324,8 @@ class MultiGroupXS(object): This is a helper method for MultiGroupXS subclasses to create tallies for input file generation. The tallies are stored in the tallies dict. + This method is called by each subclass' create_tallies(...) method + which define the parameters given to this parent class method. Parameters ---------- @@ -343,8 +348,8 @@ class MultiGroupXS(object): # Create a domain Filter object domain_filter = openmc.Filter(self.domain_type, self.domain.id) - domain_filter.num_bins = 1 + # Create each Tally needed to compute the multi group cross section for score, key, filters in zip(scores, keys, all_filters): self.tallies[key] = openmc.Tally(name=self.name) self.tallies[key].add_score(score) @@ -355,7 +360,7 @@ class MultiGroupXS(object): for filter in filters: self.tallies[key].add_filter(filter) - # If this is a by nuclide cross-section, add all nuclides to Tally + # If this is a by-nuclide cross-section, add all nuclides to Tally if self.by_nuclide and score != 'flux': all_nuclides = self.domain.get_all_nuclides() for nuclide in all_nuclides: @@ -366,7 +371,18 @@ class MultiGroupXS(object): @abc.abstractmethod def compute_xs(self): """Performs generic cleanup after a subclass' uses tally arithmetic to - compute a multi-group cross section as a derived tally.""" + compute a multi-group cross section as a derived tally. + + This method replaces CrossNuclides generated by tally arithmetic with + the original Nuclide objects in the xs_tally instance attribute. The + simple Nuclides allow for cleaner output through Pandas DataFrames as + well as simpler data access through the get_xs(...) class method. + + In addition, this routine resets NaNs in the multi group cross section + array to 0.0. This may be needed occur if no events were scored in + certain tally bins, which will lead to a divide-by-zero situation. + + """ # If computing xs for each nuclide, replace CrossNuclides with originals if self.by_nuclide: @@ -393,6 +409,12 @@ class MultiGroupXS(object): statepoint : openmc.StatePoint An OpenMC StatePoint object with tally data + Raises + ------ + ValueError + When this method is called with a statepoint that has not been + linked with a summary object. + """ cv.check_type('statepoint', statepoint, openmc.statepoint.StatePoint) @@ -419,21 +441,13 @@ class MultiGroupXS(object): # Create Tallies to search for in StatePoint self.create_tallies() - if self.domain_type == 'distribcell': - filters = [] - filter_bins = [] - else: - filters = [self.domain_type] - filter_bins = [(self.domain.id,)] - # Find, slice and store Tallies from StatePoint # The tally slicing is needed if tally merging was used for tally_type, tally in self.tallies.items(): sp_tally = statepoint.get_tally(tally.scores, tally.filters, tally.nuclides, estimator=tally.estimator) - sp_tally = sp_tally.get_slice(tally.scores, filters, - filter_bins, tally.nuclides) + sp_tally = sp_tally.get_slice(tally.scores, nuclides=tally.nuclides) self.tallies[tally_type] = sp_tally def get_xs(self, groups='all', subdomains='all', nuclides='all', @@ -465,7 +479,7 @@ class MultiGroupXS(object): Returns ------- - xs : ndarray + ndarray A NumPy array of the multi-group cross section indexed in the order each group, subdomain and nuclide is listed in the parameters. @@ -502,8 +516,6 @@ class MultiGroupXS(object): filter_bins.append((self.energy_groups.get_group_bounds(group),)) # Construct a collection of the nuclides to retrieve from the xs tally - # NOTE: We must not override the "nuclides" parameter since it is used - # to retrieve atomic number densities for micro xs if self.by_nuclide: if nuclides == 'all' or nuclides == 'sum' or nuclides == ['sum']: query_nuclides = self.get_all_nuclides() @@ -512,14 +524,14 @@ class MultiGroupXS(object): else: query_nuclides = ['total'] - # Use tally summation if user requested the sum for all nuclides + # If user requested the sum for all nuclides, use tally summation if nuclides == 'sum' or nuclides == ['sum']: xs_tally = self.xs_tally.summation(nuclides=query_nuclides) xs = xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) else: xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, - nuclides=query_nuclides, value=value) + nuclides=query_nuclides, value=value) # Divide by atom number densities for microscopic cross sections if xs_type == 'micro': @@ -533,11 +545,12 @@ class MultiGroupXS(object): # 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) + + # Reshape tally data array with separate axes for domain and energy num_subdomains = xs.shape[0] / num_groups new_shape = (num_subdomains, num_groups) + xs.shape[1:] xs = np.reshape(xs, new_shape) @@ -583,7 +596,7 @@ class MultiGroupXS(object): condensed_xs = copy.deepcopy(self) condensed_xs.energy_groups = coarse_groups - # Build indices to sum up over + # Build energy indices to sum across energy_indices = [] for group in range(coarse_groups.num_groups, 0, -1): low, high = coarse_groups.get_group_bounds(group) @@ -629,9 +642,9 @@ class MultiGroupXS(object): def get_subdomain_avg_xs(self, subdomains='all'): """Construct a subdomain-averaged version of this cross section. - This is primarily useful for averaging across distribcell instances. - This routine performs spatial homogenization to compute the scalar - flux-weighted average cross section across the subdomains. + This method is useful for averaging cross sections across distribcell + instances. The method performs spatial homogenization to compute the + scalar flux-weighted average cross section across the subdomains. Parameters ---------- @@ -707,7 +720,7 @@ class MultiGroupXS(object): return avg_xs def print_xs(self, subdomains='all', nuclides='all', xs_type='macro'): - """Prints a string representation for the multi-group cross section. + """Print a string representation for the multi-group cross section. Parameters ---------- @@ -736,7 +749,7 @@ class MultiGroupXS(object): if self.by_nuclide: if nuclides == 'all': nuclides = self.get_all_nuclides() - if nuclides == 'sum': + elif nuclides == 'sum': nuclides = ['sum'] else: cv.check_iterable_type('nuclides', nuclides, basestring) @@ -784,9 +797,9 @@ class MultiGroupXS(object): average = self.get_xs([group], [subdomain], [nuclide], xs_type=xs_type, value='mean') rel_err = self.get_xs([group], [subdomain], [nuclide], - xs_type=xs_type, value='rel_err')*100 - average = np.nan_to_num(average.flatten())[0] - rel_err = np.nan_to_num(rel_err.flatten())[0] + xs_type=xs_type, 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' @@ -796,13 +809,13 @@ class MultiGroupXS(object): def build_hdf5_store(self, filename='mgxs', directory='mgxs', xs_type='macro', append=True): - """Export the multi-group cross section data into an HDF5 binary file. + """Export the multi-group cross section data to an HDF5 binary file. - This routine constructs an HDF5 file which stores the multi-group - cross section data. The data is be stored in a hierarchy of HDF5 groups + This method constructs an HDF5 file which stores the multi-group + cross section data. The data is stored in a hierarchy of HDF5 groups from the domain type, domain id, subdomain id (for distribcell domains), - and cross section type. Two datasets for the mean and standard deviation - are stored for each subddomain entry in the HDF5 file. + nuclides and cross section type. Two datasets for the mean and standard + deviation are stored for each subdomain entry in the HDF5 file. NOTE: This requires the h5py Python package. @@ -892,9 +905,10 @@ class MultiGroupXS(object): for j, nuclide in enumerate(nuclides): if nuclide != 'sum': + density = densities[j] nuclide_group = rxn_group.require_group(nuclide) nuclide_group.require_dataset('density', dtype=np.float64, - data=[densities[j]], shape=(1,)) + data=[density], shape=(1,)) else: nuclide_group = rxn_group @@ -919,9 +933,9 @@ class MultiGroupXS(object): format='csv', groups='all', xs_type='macro'): """Export the multi-group cross section data to a file. - This routine leverages the functionality in the Pandas library to - export the multi-group cross section data in a variety of output - file formats for storage and/or post-processing. + This method leverages the functionality in the Pandas library to export + the multi-group cross section data in a variety of output file formats + for storage and/or post-processing. Parameters ---------- @@ -990,7 +1004,7 @@ class MultiGroupXS(object): xs_type='macro', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. - This routine leverages the Tally.get_pandas_dataframe(...) routine, but + This method leverages the Tally.get_pandas_dataframe(...) method, but renames the columns with terminology appropriate for cross section data. Parameters @@ -1799,7 +1813,7 @@ class Chi(MultiGroupXS): nu_fission_out = nu_fission_out.summation(nuclides=nuclides) # Compute chi and store it as the xs_tally attribute so we can use - # the generic get_xs routine + # the generic get_xs(...) method xs_tally = nu_fission_out / nu_fission_in xs = xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) @@ -1848,7 +1862,7 @@ class Chi(MultiGroupXS): xs_type='macro', summary=None): """Build a Pandas DataFrame for the MultiGroupXS data. - This routine leverages the Tally.get_pandas_dataframe(...) routine, but + This method leverages the Tally.get_pandas_dataframe(...) method, but renames the columns with terminology appropriate for cross section data. Parameters @@ -1883,12 +1897,12 @@ class Chi(MultiGroupXS): """ - # Build the dataframe using the parent class routine + # Build the dataframe using the parent class method df = super(Chi, self).get_pandas_dataframe(groups, nuclides, xs_type, summary) # If user requested micro cross sections, multiply by the atom - # densities to cancel out division made by the parent class routine + # densities to cancel out division made by the parent class method if xs_type == 'micro': if self.by_nuclide: densities = self.get_nuclide_densities(nuclides) diff --git a/openmc/tallies.py b/openmc/tallies.py index 3e0d70409..dc58c2f6d 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -843,8 +843,8 @@ class Tally(object): def get_filter_indices(self, filters=[], filter_bins=[]): """Get indices into the filter axis of this tally's data arrays. - This is a helper routine for the Tally.get_values(...) routine to - extract tally data. This routine returns the indices into the filter + This is a helper method for the Tally.get_values(...) method to + extract tally data. This method returns the indices into the filter axis of the tally's data array (axis=0) for particular combinations of filters and their corresponding bins. @@ -937,8 +937,8 @@ class Tally(object): def get_nuclide_indices(self, nuclides): """Get indices into the nuclide axis of this tally's data arrays. - This is a helper routine for the Tally.get_values(...) routine to - extract tally data. This routine returns the indices into the nuclide + This is a helper method for the Tally.get_values(...) method to + extract tally data. This method returns the indices into the nuclide axis of the tally's data array (axis=1) for one or more nuclides. Parameters @@ -971,8 +971,8 @@ class Tally(object): def get_score_indices(self, scores): """Get indices into the score axis of this tally's data arrays. - This is a helper routine for the Tally.get_values(...) routine to - extract tally data. This routine returns the indices into the score + This is a helper method for the Tally.get_values(...) method to + extract tally data. This method returns the indices into the score axis of the tally's data array (axis=2) for one or more scores. Parameters @@ -1227,7 +1227,7 @@ class Tally(object): The tally data in OpenMC is stored as a 3D array with the dimensions corresponding to filters, nuclides and scores. As a result, tally data can be opaque for a user to directly index (i.e., without use of the - Tally.get_values(...) routine) since one must know how to properly use + Tally.get_values(...) method) since one must know how to properly use the number of bins and strides for each filter to index into the first (filter) dimension. @@ -1235,7 +1235,7 @@ class Tally(object): unique dimensions corresponding to each tally filter. For example, suppose this tally has arrays of data with shape (8,5,5) corresponding to two filters (2 and 4 bins, respectively), five nuclides and five - scores. This routine will return a version of the data array with the + scores. This method will return a version of the data array with the with a new shape of (2,4,5,5) such that the first two dimensions correspond directly to the two filters with two and four bins. @@ -1293,7 +1293,7 @@ class Tally(object): # Ensure that StatePoint.read_results() was called first if self._sum is None or self._sum_sq is None and not self.derived: msg = 'The Tally ID="{0}" has no data to export. Call the ' \ - 'StatePoint.read_results() routine before using ' \ + 'StatePoint.read_results() method before using ' \ 'Tally.export_results(...)'.format(self.id) raise KeyError(msg) @@ -1688,8 +1688,8 @@ class Tally(object): def swap_filters(self, filter1, filter2): """Reverse the ordering of two filters in this tally - This is a helper routine for tally arithmetic which helps align the data - in two tallies with shared filters. This routine copies this tally and + This is a helper method for tally arithmetic which helps align the data + in two tallies with shared filters. This method copies this tally and reverses the order of the two filters. Parameters @@ -2471,7 +2471,7 @@ class Tally(object): def diagonalize_filter(self, new_filter): """Diagonalize the tally data array along a new axis of filter bins. - This is a helper method for the tally arithmetic methods. This routine + This is a helper method for the tally arithmetic methods. This method adds the new filter to a derived tally constructed copied from this one. The data in the derived tally arrays is "diagonalized" along the bins in the new filter. This functionality is used by the openmc.mgxs module; to From 40f893e6d0c2ab8d319558aefff36a680464bf25 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 02:57:06 -0400 Subject: [PATCH 069/130] Updated docstrings for MultiGroupXS subclasses in Python API --- .../pythonapi/examples/post-processing.ipynb | 360 +--------- .../pythonapi/examples/tally-arithmetic.ipynb | 659 ++++++++++++++++-- openmc/mgxs/mgxs.py | 232 ++++-- 3 files changed, 813 insertions(+), 438 deletions(-) diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 7c5508e95..51ca6adcf 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -353,7 +353,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDE6MDM6MzQtMDQ6MDBoBRKHAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAxOjAzOjM0LTA0OjAwGViqOwAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDI6NTE6MjktMDQ6MDANEGNoAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAyOjUxOjI5LTA0OjAwfE3b1AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -419,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "collapsed": true }, @@ -438,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true @@ -465,7 +465,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 01:03:34\n", + " Date/Time: 2015-10-03 02:51:29\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -533,108 +533,8 @@ " 39/1 1.01971 1.03820 +/- 0.00312\n", " 40/1 1.01491 1.03743 +/- 0.00311\n", " 41/1 1.02779 1.03712 +/- 0.00303\n", - " 42/1 1.03047 1.03691 +/- 0.00294\n", - " 43/1 1.02305 1.03649 +/- 0.00288\n", - " 44/1 1.07854 1.03773 +/- 0.00305\n", - " 45/1 1.04412 1.03791 +/- 0.00297\n", - " 46/1 1.05139 1.03828 +/- 0.00291\n", - " 47/1 1.05357 1.03870 +/- 0.00286\n", - " 48/1 1.06435 1.03937 +/- 0.00287\n", - " 49/1 1.02632 1.03904 +/- 0.00281\n", - " 50/1 1.05201 1.03936 +/- 0.00276\n", - " 51/1 1.04582 1.03952 +/- 0.00270\n", - " 52/1 1.02056 1.03907 +/- 0.00267\n", - " 53/1 1.06448 1.03966 +/- 0.00267\n", - " 54/1 1.03609 1.03958 +/- 0.00261\n", - " 55/1 1.02701 1.03930 +/- 0.00257\n", - " 56/1 1.04865 1.03950 +/- 0.00252\n", - " 57/1 1.06310 1.04000 +/- 0.00252\n", - " 58/1 1.02975 1.03979 +/- 0.00247\n", - " 59/1 1.03922 1.03978 +/- 0.00242\n", - " 60/1 1.07259 1.04043 +/- 0.00246\n", - " 61/1 1.04555 1.04053 +/- 0.00242\n", - " 62/1 1.01950 1.04013 +/- 0.00240\n", - " 63/1 1.04618 1.04024 +/- 0.00236\n", - " 64/1 1.02489 1.03996 +/- 0.00233\n", - " 65/1 1.06850 1.04048 +/- 0.00235\n", - " 66/1 1.03623 1.04040 +/- 0.00231\n", - " 67/1 0.99892 1.03967 +/- 0.00238\n", - " 68/1 1.05557 1.03995 +/- 0.00236\n", - " 69/1 1.01211 1.03948 +/- 0.00236\n", - " 70/1 1.04679 1.03960 +/- 0.00233\n", - " 71/1 1.03461 1.03952 +/- 0.00229\n", - " 72/1 1.01993 1.03920 +/- 0.00227\n", - " 73/1 1.04742 1.03933 +/- 0.00224\n", - " 74/1 1.05269 1.03954 +/- 0.00222\n", - " 75/1 1.05696 1.03981 +/- 0.00220\n", - " 76/1 1.05904 1.04010 +/- 0.00218\n", - " 77/1 1.05930 1.04039 +/- 0.00217\n", - " 78/1 1.03375 1.04029 +/- 0.00214\n", - " 79/1 1.07044 1.04073 +/- 0.00215\n", - " 80/1 1.04144 1.04074 +/- 0.00212\n", - " 81/1 1.06296 1.04105 +/- 0.00212\n", - " 82/1 1.04630 1.04112 +/- 0.00209\n", - " 83/1 1.03772 1.04108 +/- 0.00206\n", - " 84/1 1.03774 1.04103 +/- 0.00203\n", - " 85/1 1.03984 1.04101 +/- 0.00200\n", - " 86/1 1.03040 1.04087 +/- 0.00198\n", - " 87/1 1.03484 1.04080 +/- 0.00196\n", - " 88/1 1.03820 1.04076 +/- 0.00193\n", - " 89/1 1.04654 1.04084 +/- 0.00191\n", - " 90/1 1.03377 1.04075 +/- 0.00189\n", - " 91/1 1.03370 1.04066 +/- 0.00187\n", - " 92/1 1.04172 1.04067 +/- 0.00184\n", - " 93/1 1.04945 1.04078 +/- 0.00182\n", - " 94/1 1.03360 1.04069 +/- 0.00181\n", - " 95/1 1.06547 1.04099 +/- 0.00181\n", - " 96/1 1.04340 1.04101 +/- 0.00179\n", - " 97/1 1.07502 1.04140 +/- 0.00181\n", - " 98/1 1.05391 1.04155 +/- 0.00179\n", - " 99/1 1.05622 1.04171 +/- 0.00178\n", - " 100/1 1.01519 1.04142 +/- 0.00179\n", - " Creating state point statepoint.100.h5...\n", - "\n", - " ===========================================================================\n", - " ======================> SIMULATION FINISHED <======================\n", - " ===========================================================================\n", - "\n", - "\n", - " =======================> TIMING STATISTICS <=======================\n", - "\n", - " Total time for initialization = 4.1100E-01 seconds\n", - " Reading cross sections = 1.0300E-01 seconds\n", - " Total time in simulation = 2.6639E+02 seconds\n", - " Time in transport only = 2.6632E+02 seconds\n", - " Time in inactive batches = 1.0721E+01 seconds\n", - " Time in active batches = 2.5566E+02 seconds\n", - " Time synchronizing fission bank = 1.8000E-02 seconds\n", - " Sampling source sites = 1.0000E-02 seconds\n", - " SEND/RECV source sites = 6.0000E-03 seconds\n", - " Time accumulating tallies = 1.9000E-02 seconds\n", - " Total time for finalization = 2.1800E-01 seconds\n", - " Total time elapsed = 2.6703E+02 seconds\n", - " Calculation Rate (inactive) = 4663.74 neutrons/second\n", - " Calculation Rate (active) = 1760.12 neutrons/second\n", - "\n", - " ============================> RESULTS <============================\n", - "\n", - " k-effective (Collision) = 1.04100 +/- 0.00169\n", - " k-effective (Track-length) = 1.04142 +/- 0.00179\n", - " k-effective (Absorption) = 1.04380 +/- 0.00147\n", - " Combined k-effective = 1.04287 +/- 0.00130\n", - " Leakage Fraction = 0.00000 +/- 0.00000\n", - "\n" + " 42/1 1.03047 1.03691 +/- 0.00294\n" ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -658,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true @@ -678,27 +578,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tmesh\t[10000]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t[u'flux', u'fission']\n", - "\tEstimator =\ttracklength\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "tally = sp.get_tally(scores=['flux'])\n", "print(tally)" @@ -713,33 +597,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[ 0.41271426, 0. ]],\n", - "\n", - " [[ 0.40846766, 0. ]],\n", - "\n", - " [[ 0.4112029 , 0. ]],\n", - "\n", - " ..., \n", - " [[ 0.41437289, 0. ]],\n", - "\n", - " [[ 0.41376468, 0. ]],\n", - "\n", - " [[ 0.41312074, 0. ]]])" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "tally.sum" ] @@ -753,52 +615,11 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(10000, 1, 2)\n" - ] - }, - { - "data": { - "text/plain": [ - "(array([[[ 0.00458571, 0. ]],\n", - " \n", - " [[ 0.00453853, 0. ]],\n", - " \n", - " [[ 0.00456892, 0. ]],\n", - " \n", - " ..., \n", - " [[ 0.00460414, 0. ]],\n", - " \n", - " [[ 0.00459739, 0. ]],\n", - " \n", - " [[ 0.00459023, 0. ]]]),\n", - " array([[[ 2.02702426e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.77108625e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.79568064e-05, 0.00000000e+00]],\n", - " \n", - " ..., \n", - " [[ 1.83114148e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.69970626e-05, 0.00000000e+00]],\n", - " \n", - " [[ 1.92143217e-05, 0.00000000e+00]]]))" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "print(tally.mean.shape)\n", "(tally.mean, tally.std_dev)" @@ -813,27 +634,11 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tally\n", - "\tID =\t10000\n", - "\tName =\t\n", - "\tFilters =\t\n", - " \t\tmesh\t[10000]\n", - "\tNuclides =\ttotal \n", - "\tScores =\t[u'flux']\n", - "\tEstimator =\ttracklength\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "flux = tally.get_slice(scores=['flux'])\n", "fission = tally.get_slice(scores=['fission'])\n", @@ -849,7 +654,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": false }, @@ -863,32 +668,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = plt.subplot(121)\n", "fig.imshow(flux.mean)\n", @@ -905,22 +689,11 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Determine relative error\n", "relative_error = np.zeros_like(flux.std_dev)\n", @@ -947,29 +720,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [-0.5991379733562734, 0.6213299732428319, -0.5049581697849825], 1.4308796774550836),\n", - " (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [0.6943502674814661, -0.18996972225593808, 0.694110373553384], 1.8499326750790277),\n", - " (1.0, [-0.2283457014858208, -0.3149356437736135, -0.6287339985223156], [0.22841158666373973, -0.9428738529578353, 0.24252225565130936], 2.8993105331976654),\n", - " ...,\n", - " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [0.871391386295745, 0.3866181159860615, 0.30199914615933615], 2.2329770939373517),\n", - " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622),\n", - " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622)], \n", - " dtype=[('wgt', '" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create log-spaced energy bins from 1 keV to 100 MeV\n", "energy_bins = np.logspace(-3,1)\n", @@ -1071,32 +786,11 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "(-0.5, 0.5)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "plt.quiver(sp.source['xyz'][:,0], sp.source['xyz'][:,1],\n", " sp.source['uvw'][:,0], sp.source['uvw'][:,1],\n", diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 5960ac111..1196c27e1 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -369,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDE6MTQ6MjctMDQ6MDC2Fcw9AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAxOjE0OjI3LTA0OjAwx0h0gQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDI6NTA6NDctMDQ6MDB0gnqMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAyOjUwOjQ3LTA0OjAwBd/CMAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -580,7 +580,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 01:14:27\n", + " Date/Time: 2015-10-03 02:50:47\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -636,20 +636,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 6.7400E-01 seconds\n", - " Reading cross sections = 1.5200E-01 seconds\n", - " Total time in simulation = 2.4330E+01 seconds\n", - " Time in transport only = 2.4308E+01 seconds\n", - " Time in inactive batches = 2.4220E+00 seconds\n", - " Time in active batches = 2.1908E+01 seconds\n", + " Total time for initialization = 1.1480E+00 seconds\n", + " Reading cross sections = 2.9100E-01 seconds\n", + " Total time in simulation = 2.7345E+01 seconds\n", + " Time in transport only = 2.7286E+01 seconds\n", + " Time in inactive batches = 5.8310E+00 seconds\n", + " Time in active batches = 2.1514E+01 seconds\n", " Time synchronizing fission bank = 1.0000E-03 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 = 1.0000E-03 seconds\n", - " Total time elapsed = 2.5018E+01 seconds\n", - " Calculation Rate (inactive) = 5161.02 neutrons/second\n", - " Calculation Rate (active) = 1711.70 neutrons/second\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 2.8526E+01 seconds\n", + " Calculation Rate (inactive) = 2143.71 neutrons/second\n", + " Calculation Rate (active) = 1743.05 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -721,20 +721,7 @@ "collapsed": false, "scrolled": true }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "10003", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the summary file and link with statepoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0msu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'summary.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlink_with_summary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msu\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/statepoint.pyc\u001b[0m in \u001b[0;36mlink_with_summary\u001b[1;34m(self, summary)\u001b[0m\n\u001b[0;32m 610\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mtally_id\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtally\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 611\u001b[0m \u001b[1;31m# Get the Tally name from the summary file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 612\u001b[1;33m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtally_id\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 613\u001b[0m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_summary\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mKeyError\u001b[0m: 10003" - ] - } - ], + "outputs": [], "source": [ "# Load the summary file and link with statepoint\n", "su = Summary('summary.h5')\n", @@ -752,11 +739,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "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", + "
nuclidescoremeanstd. dev.
0total(nu-fission / absorption)1.0463530.00935
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "0 total (nu-fission / absorption) 1.046353 0.00935" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute k-infinity using tally arithmetic\n", "fiss_rate = sp.get_tally(name='fiss. rate')\n", @@ -776,11 +799,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)totalabsorption0.958730.00774
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total absorption 0.95873 0.00774" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute resonance escape probability using tally arithmetic\n", "therm_abs_rate = sp.get_tally(name='therm. abs. rate')\n", @@ -798,11 +859,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "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", + "
nuclidescoremeanstd. dev.
0totalnu-fission1.0916220.011163
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "0 total nu-fission 1.091622 0.011163" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute fast fission factor factor using tally arithmetic\n", "therm_fiss_rate = sp.get_tally(name='therm. fiss. rate')\n", @@ -821,11 +918,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "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", + "
energy [MeV]cellnuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)10000totalabsorption0.8020120.006609
\n", + "
" + ], + "text/plain": [ + " energy [MeV] cell nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) 10000 total absorption 0.802012 0.006609" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute thermal flux utilization factor using tally arithmetic\n", "fuel_therm_abs_rate = sp.get_tally(name='fuel therm. abs. rate')\n", @@ -842,11 +979,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(nu-fission / absorption)1.2466040.011825
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total (nu-fission / absorption) 1.246604 0.011825" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute neutrons produced per absorption (eta) using tally arithmetic\n", "eta = therm_fiss_rate / fuel_therm_abs_rate\n", @@ -862,11 +1037,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(((absorption * nu-fission) * absorption) * (n...1.0463530.01894
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide \\\n", + "0 (0.0e+00 - 6.2e-01) total \n", + "\n", + " score mean std. dev. \n", + "0 (((absorption * nu-fission) * absorption) * (n... 1.046353 0.01894 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "keff = res_esc * fast_fiss * therm_util * eta\n", "keff.get_pandas_dataframe()" @@ -883,7 +1099,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false, "scrolled": true @@ -899,11 +1115,131 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)(U-238 / total)(nu-fission / flux)6.641746e-076.859257e-09
110000(0.0e+00 - 6.3e-07)(U-238 / total)(scatter / flux)2.099861e-011.966887e-03
210000(0.0e+00 - 6.3e-07)(U-235 / total)(nu-fission / flux)3.556665e-013.717881e-03
310000(0.0e+00 - 6.3e-07)(U-235 / total)(scatter / flux)5.554650e-035.218094e-05
410000(6.3e-07 - 2.0e+01)(U-238 / total)(nu-fission / flux)7.165057e-035.625590e-05
510000(6.3e-07 - 2.0e+01)(U-238 / total)(scatter / flux)2.276535e-018.544314e-04
610000(6.3e-07 - 2.0e+01)(U-235 / total)(nu-fission / flux)8.089493e-035.080374e-05
710000(6.3e-07 - 2.0e+01)(U-235 / total)(scatter / flux)3.370111e-031.361116e-05
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score \\\n", + "0 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (nu-fission / flux) \n", + "1 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (scatter / flux) \n", + "2 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (nu-fission / flux) \n", + "3 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (scatter / flux) \n", + "4 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (nu-fission / flux) \n", + "5 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (scatter / flux) \n", + "6 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (nu-fission / flux) \n", + "7 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (scatter / flux) \n", + "\n", + " mean std. dev. \n", + "0 6.641746e-07 6.859257e-09 \n", + "1 2.099861e-01 1.966887e-03 \n", + "2 3.556665e-01 3.717881e-03 \n", + "3 5.554650e-03 5.218094e-05 \n", + "4 7.165057e-03 5.625590e-05 \n", + "5 2.276535e-01 8.544314e-04 \n", + "6 8.089493e-03 5.080374e-05 \n", + "7 3.370111e-03 1.361116e-05 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "fuel_xs = fuel_rxn_rates / flux\n", "fuel_xs.get_pandas_dataframe()" @@ -918,11 +1254,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 6.64174599e-07]\n", + " [ 3.55666541e-01]]\n", + "\n", + " [[ 7.16505734e-03]\n", + " [ 8.08949336e-03]]]\n" + ] + } + ], "source": [ "# Show how to use Tally.get_values(...) with a CrossScore\n", "nu_fiss_xs = fuel_xs.get_values(scores=['(nu-fission / flux)'])\n", @@ -938,11 +1286,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.00555465]]\n", + "\n", + " [[ 0.00337011]]]\n" + ] + } + ], "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", @@ -952,11 +1310,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.22765348]\n", + " [ 0.00337011]]]\n" + ] + } + ], "source": [ "# Show how to use Tally.get_values(...) with a CrossFilter and CrossScore\n", "fast_scatter_xs = fuel_xs.get_values(filters=['energy'], \n", @@ -974,11 +1341,81 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)U-238nu-fission0.0000021.284890e-08
110000(0.0e+00 - 6.3e-07)U-235nu-fission0.8679827.022256e-03
210000(6.3e-07 - 2.0e+01)U-238nu-fission0.0828016.087096e-04
310000(6.3e-07 - 2.0e+01)U-235nu-fission0.0934845.275039e-04
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10000 (0.0e+00 - 6.3e-07) U-238 nu-fission 0.000002 1.284890e-08\n", + "1 10000 (0.0e+00 - 6.3e-07) U-235 nu-fission 0.867982 7.022256e-03\n", + "2 10000 (6.3e-07 - 2.0e+01) U-238 nu-fission 0.082801 6.087096e-04\n", + "3 10000 (6.3e-07 - 2.0e+01) U-235 nu-fission 0.093484 5.275039e-04" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# \"Slice\" the nu-fission data into a new derived Tally\n", "nu_fission_rates = fuel_rxn_rates.get_slice(scores=['nu-fission'])\n", @@ -987,11 +1424,131 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010002(1.0e-08 - 1.1e-07)H-1scatter4.6205250.038249
110002(1.1e-07 - 1.2e-06)H-1scatter2.0368410.013203
210002(1.2e-06 - 1.3e-05)H-1scatter1.6599160.010107
310002(1.3e-05 - 1.4e-04)H-1scatter1.8615460.013328
410002(1.4e-04 - 1.5e-03)H-1scatter2.0496640.008215
510002(1.5e-03 - 1.6e-02)H-1scatter2.1621570.010245
610002(1.6e-02 - 1.7e-01)H-1scatter2.2244960.013796
710002(1.7e-01 - 1.9e+00)H-1scatter1.9975850.009161
810002(1.9e+00 - 2.0e+01)H-1scatter0.3734720.003922
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10002 (1.0e-08 - 1.1e-07) H-1 scatter 4.620525 0.038249\n", + "1 10002 (1.1e-07 - 1.2e-06) H-1 scatter 2.036841 0.013203\n", + "2 10002 (1.2e-06 - 1.3e-05) H-1 scatter 1.659916 0.010107\n", + "3 10002 (1.3e-05 - 1.4e-04) H-1 scatter 1.861546 0.013328\n", + "4 10002 (1.4e-04 - 1.5e-03) H-1 scatter 2.049664 0.008215\n", + "5 10002 (1.5e-03 - 1.6e-02) H-1 scatter 2.162157 0.010245\n", + "6 10002 (1.6e-02 - 1.7e-01) H-1 scatter 2.224496 0.013796\n", + "7 10002 (1.7e-01 - 1.9e+00) H-1 scatter 1.997585 0.009161\n", + "8 10002 (1.9e+00 - 2.0e+01) H-1 scatter 0.373472 0.003922" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "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", diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 171718bc8..919641f12 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1119,14 +1119,22 @@ class MultiGroupXS(object): class TotalXS(MultiGroupXS): + """A total multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(TotalXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(TotalXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'total' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two tracklength tallies to compute the 'flux' + and 'total' reaction rates in the spatial domain and energy groups + of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'total'] @@ -1143,21 +1151,30 @@ class TotalXS(MultiGroupXS): def compute_xs(self): """Computes the multi-group total cross sections using OpenMC - tally arithmetic.""" + tally arithmetic. + """ self._xs_tally = self.tallies['total'] / self.tallies['flux'] super(TotalXS, self).compute_xs() class TransportXS(MultiGroupXS): + """A transport-corrected total multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(TransportXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(TransportXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'transport' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs three analog tallies to compute the 'flux', + 'total' and 'scatter-P1' reaction rates in the spatial domain and + energy groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'total', 'scatter-P1'] @@ -1171,10 +1188,35 @@ class TransportXS(MultiGroupXS): filters = [[energy_filter], [energy_filter], [energyout_filter]] # Initialize the Tallies - super(TransportXS, self).create_tallies(scores, filters, keys, estimator) + super(TransportXS, self).create_tallies(scores, filters, + keys, estimator) def load_from_statepoint(self, statepoint): + """Extracts tallies in an OpenMC StatePoint with the data needed to + compute multi-group cross sections. + + This method is needed to compute cross section data from tallies + in an OpenMC StatePoint object. + + NOTE: The statepoint must first be linked with an OpenMC Summary object. + + Parameters + ---------- + statepoint : openmc.StatePoint + An OpenMC StatePoint object with tally data + + Raises + ------ + ValueError + When this method is called with a statepoint that has not been + linked with a summary object. + + """ + + # Load the tallies from the statepoint using the parent class method super(TransportXS, self).load_from_statepoint(statepoint) + + # Use tally slicing to remove scatter-P0 data from scatter-P1 tally scatter_p1 = self.tallies['scatter-P1'] self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) self.tallies['scatter-P1'].filters[-1].type = 'energy' @@ -1189,14 +1231,22 @@ class TransportXS(MultiGroupXS): class AbsorptionXS(MultiGroupXS): + """An absorption multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(AbsorptionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(AbsorptionXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'absorption' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two tracklength tallies to compute the 'flux' + and 'absorption' reaction rates in the spatial domain and energy + groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'absorption'] @@ -1209,7 +1259,8 @@ class AbsorptionXS(MultiGroupXS): filters = [[energy_filter], [energy_filter]] # Initialize the Tallies - super(AbsorptionXS, self).create_tallies(scores, filters, keys, estimator) + super(AbsorptionXS, self).create_tallies(scores, filters, + keys, estimator) def compute_xs(self): """Computes the multi-group absorption cross sections using OpenMC @@ -1220,14 +1271,22 @@ class AbsorptionXS(MultiGroupXS): class CaptureXS(MultiGroupXS): + """A capture multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(CaptureXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(CaptureXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'capture' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two tracklength tallies to compute the 'flux' + and 'capture' reaction rates in the spatial domain and energy + groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'absorption', 'fission'] @@ -1252,14 +1311,22 @@ class CaptureXS(MultiGroupXS): class FissionXS(MultiGroupXS): + """A fission multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(FissionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(FissionXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'fission' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two tracklength tallies to compute the 'flux' + and 'fission' reaction rates in the spatial domain and energy + groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'fission'] @@ -1283,14 +1350,22 @@ class FissionXS(MultiGroupXS): class NuFissionXS(MultiGroupXS): + """A fission production multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(NuFissionXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(NuFissionXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'nu-fission' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two tracklength tallies to compute the 'flux' + and 'nu-fission' reaction rates in the spatial domain and energy + groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'nu-fission'] @@ -1303,7 +1378,8 @@ class NuFissionXS(MultiGroupXS): filters = [[energy_filter], [energy_filter]] # Initialize the Tallies - super(NuFissionXS, self).create_tallies(scores, filters, keys, estimator) + super(NuFissionXS, self).create_tallies(scores, filters, + keys, estimator) def compute_xs(self): """Computes the multi-group nu-fission cross sections using OpenMC @@ -1314,14 +1390,22 @@ class NuFissionXS(MultiGroupXS): class ScatterXS(MultiGroupXS): + """A scatter multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(ScatterXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(ScatterXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'scatter' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two tracklength tallies to compute the 'flux' + and 'scatter' reaction rates in the spatial domain and energy + groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'scatter'] @@ -1345,14 +1429,22 @@ class ScatterXS(MultiGroupXS): class NuScatterXS(MultiGroupXS): + """A nu-scatter multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(NuScatterXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(NuScatterXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'nu-scatter' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two analog tallies to compute the 'flux' + and 'nu-scatter' reaction rates in the spatial domain and energy + groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter'] @@ -1365,7 +1457,8 @@ class NuScatterXS(MultiGroupXS): filters = [[energy_filter], [energy_filter]] # Initialize the Tallies - super(NuScatterXS, self).create_tallies(scores, filters, keys, estimator) + super(NuScatterXS, self).create_tallies(scores, filters, + keys, estimator) def compute_xs(self): """Computes the nu-scattering multi-group cross section using OpenMC @@ -1376,14 +1469,22 @@ class NuScatterXS(MultiGroupXS): class ScatterMatrixXS(MultiGroupXS): + """A scattering matrix multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(ScatterMatrixXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'scatter matrix' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs three analog tallies to compute the 'flux', + 'scatter' and 'scatter-P1' reaction rates in the spatial domain and + energy groups of interest. + + """ group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) @@ -1397,7 +1498,8 @@ class ScatterMatrixXS(MultiGroupXS): keys = scores # Initialize the Tallies - super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) + super(ScatterMatrixXS, self).create_tallies(scores, filters, + keys, estimator) def compute_xs(self, correction='P0'): """Computes the multi-group scattering matrix using OpenMC @@ -1425,9 +1527,9 @@ class ScatterMatrixXS(MultiGroupXS): self._xs_tally = rxn_tally / self.tallies['flux'] super(ScatterMatrixXS, self).compute_xs() - def get_xs(self, in_groups='all', out_groups='all', subdomains='all', - nuclides='all', order_groups='increasing', - xs_type='macro', value='mean'): + def get_xs(self, in_groups='all', out_groups='all', + subdomains='all', nuclides='all', xs_type='macro', + order_groups='increasing', value='mean'): """Returns an array of multi-group cross sections. This method constructs a 2D NumPy array for the requested scattering @@ -1448,15 +1550,16 @@ class ScatterMatrixXS(MultiGroupXS): return the cross section summed over all nuclides. xs_type: {'macro' or 'micro'} Return the macro or micro cross section in units of cm^-1 or barns - xs_type: {'macro' or 'micro'} - Return the macro or micro cross section in units of cm^-1 or barns + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing (default) + or decreasing energy groups (decreasing or increasing energies) value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted Returns ------- - xs : ndarray + ndarray A NumPy array of the multi-group cross section indexed in the order each group and subdomain is listed in the parameters. @@ -1500,8 +1603,6 @@ class ScatterMatrixXS(MultiGroupXS): filter_bins.append((self.energy_groups.get_group_bounds(group),)) # Construct a collection of the nuclides to retrieve from the xs tally - # NOTE: We must not override the "nuclides" parameter since it is used - # to retrieve atomic number densities for micro xs if self.by_nuclide: if nuclides == 'all' or nuclides == 'sum' or nuclides == ['sum']: query_nuclides = self.get_all_nuclides() @@ -1516,8 +1617,9 @@ class ScatterMatrixXS(MultiGroupXS): xs = xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) else: - xs = self.xs_tally.get_values(filters=filters, filter_bins=filter_bins, - nuclides=query_nuclides, value=value) + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, + nuclides=query_nuclides, value=value) xs = np.nan_to_num(xs) @@ -1533,7 +1635,6 @@ class ScatterMatrixXS(MultiGroupXS): # 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 in_groups == 'all': num_in_groups = self.num_groups else: @@ -1542,6 +1643,8 @@ class ScatterMatrixXS(MultiGroupXS): num_out_groups = self.num_groups else: num_out_groups = len(out_groups) + + # Reshape tally data array with separate axes for domain and energy num_subdomains = xs.shape[0] / (num_in_groups * num_out_groups) new_shape = (num_subdomains, num_in_groups, num_out_groups) new_shape += xs.shape[1:] @@ -1648,13 +1751,15 @@ class ScatterMatrixXS(MultiGroupXS): for out_group in range(1, self.num_groups+1): string += template.format('', in_group, out_group) average = \ - self.get_xs([in_group], [out_group], [subdomain], - [nuclide], xs_type=xs_type, value='mean') + self.get_xs([in_group], [out_group], + [subdomain], [nuclide], + xs_type=xs_type, value='mean') rel_err = \ - self.get_xs([in_group], [out_group], [subdomain], - [nuclide], xs_type=xs_type, value='rel_err') * 100 - average = np.nan_to_num(average.flatten())[0] - rel_err = np.nan_to_num(rel_err.flatten())[0] + self.get_xs([in_group], [out_group], + [subdomain], [nuclide], + xs_type=xs_type, value='rel_err') + average = average.flatten()[0] + rel_err = rel_err.flatten()[0] * 100. string += '{:1.2e} +/- {:1.2e}%'.format(average, rel_err) string += '\n' string += '\n' @@ -1665,14 +1770,22 @@ class ScatterMatrixXS(MultiGroupXS): class NuScatterMatrixXS(ScatterMatrixXS): + """A scattering production matrix multi-group cross section.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): - super(NuScatterMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name) + super(NuScatterMatrixXS, self).__init__(domain, domain_type, + groups, by_nuclide, name) self._rxn_type = 'nu-scatter matrix' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs three analog tallies to compute the 'flux', + 'nu-scatter' and 'scatter-P1' reaction rates in the spatial domain and + energy groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['flux', 'scatter', 'scatter-P1'] @@ -1686,9 +1799,11 @@ class NuScatterMatrixXS(ScatterMatrixXS): filters = [[energy], [energy, energyout], [energyout]] # Intialize the Tallies - super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) + super(ScatterMatrixXS, self).create_tallies(scores, filters, + keys, estimator) class Chi(MultiGroupXS): + """The fission spectrum.""" def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): @@ -1696,7 +1811,13 @@ class Chi(MultiGroupXS): self._rxn_type = 'chi' def create_tallies(self): - """Construct the OpenMC tallies needed to compute this cross section.""" + """Construct the OpenMC tallies needed to compute this cross section. + + This method constructs two analog tallies to compute 'nu-fission' + reaction rates with 'energy' and 'energyout' filters in the spatial + domain and energy groups of interest. + + """ # Create a list of scores for each Tally to be created scores = ['nu-fission', 'nu-fission'] @@ -1732,8 +1853,8 @@ class Chi(MultiGroupXS): super(Chi, self).compute_xs() def get_xs(self, groups='all', subdomains='all', nuclides='all', - order_groups='increasing', xs_type='macro', value='mean'): - """Returns an array of multi-group cross sections. + xs_type='macro', order_groups='increasing', value='mean'): + """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. @@ -1749,18 +1870,19 @@ class Chi(MultiGroupXS): special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} - Return the macro or micro cross section in units of cm^-1 or barns xs_type: {'macro' or 'micro'} This parameter is not relevant for chi but is included here to mirror the parent MultiGroupXS.get_xs(...) class method + order_groups: {'increasing', 'decreasing'} + Return the cross section indexed according to increasing (default) + or decreasing energy groups (decreasing or increasing energies) value : str A string for the type of value to return - 'mean' (default), 'std_dev' or 'rel_err' are accepted Returns ------- - xs : ndarray + ndarray A NumPy array of the multi-group cross section indexed in the order each group, subdomain and nuclide is listed in the parameters. @@ -1812,8 +1934,8 @@ class Chi(MultiGroupXS): nu_fission_in = nu_fission_in.summation(nuclides=nuclides) nu_fission_out = nu_fission_out.summation(nuclides=nuclides) - # Compute chi and store it as the xs_tally attribute so we can use - # the generic get_xs(...) method + # Compute chi and store it as the xs_tally attribute so we can + # use the generic get_xs(...) method xs_tally = nu_fission_out / nu_fission_in xs = xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) @@ -1821,13 +1943,15 @@ class Chi(MultiGroupXS): # Get chi 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, + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, nuclides=nuclides, value=value) # Get chi 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, + xs = self.xs_tally.get_values(filters=filters, + filter_bins=filter_bins, nuclides=nuclides, value=value) # If chi was computed as an average of nuclides in the domain From d58e9027847be50982815d5f28d1843f4c1cadbf Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 11:40:11 -0400 Subject: [PATCH 070/130] Corrected tally slicing for Python API MultiGroupXS --- docs/source/pythonapi/examples/geometry.xml | 8 + .../pythonapi/examples/materials-xy.png | Bin 0 -> 1271 bytes docs/source/pythonapi/examples/materials.xml | 12 + .../pythonapi/examples/mgxs/transport-xs.xls | Bin 0 -> 5632 bytes .../pythonapi/examples/openmc-mgxs.ipynb | 1112 +++++++++++++++++ .../examples/pandas-dataframes.ipynb | 22 +- docs/source/pythonapi/examples/plots.xml | 8 + .../pythonapi/examples/post-processing.ipynb | 360 +++++- docs/source/pythonapi/examples/settings.xml | 17 + docs/source/pythonapi/examples/tallies.xml | 39 + .../pythonapi/examples/tally-arithmetic.ipynb | 662 +--------- .../tracks/128_angles_0.1_cm_spacing.data | Bin 0 -> 71256 bytes openmc/mgxs/mgxs.py | 7 +- 13 files changed, 1597 insertions(+), 650 deletions(-) create mode 100644 docs/source/pythonapi/examples/geometry.xml create mode 100644 docs/source/pythonapi/examples/materials-xy.png create mode 100644 docs/source/pythonapi/examples/materials.xml create mode 100644 docs/source/pythonapi/examples/mgxs/transport-xs.xls create mode 100644 docs/source/pythonapi/examples/openmc-mgxs.ipynb create mode 100644 docs/source/pythonapi/examples/plots.xml create mode 100644 docs/source/pythonapi/examples/settings.xml create mode 100644 docs/source/pythonapi/examples/tallies.xml create mode 100644 docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data diff --git a/docs/source/pythonapi/examples/geometry.xml b/docs/source/pythonapi/examples/geometry.xml new file mode 100644 index 000000000..bfd99e0b9 --- /dev/null +++ b/docs/source/pythonapi/examples/geometry.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/source/pythonapi/examples/materials-xy.png b/docs/source/pythonapi/examples/materials-xy.png new file mode 100644 index 0000000000000000000000000000000000000000..cfed789b25a6f93030995c5645caee5dfd7cb7ac GIT binary patch literal 1271 zcmZ{jZ&Z?Z6vrPkJ7-pN={b=rqgImUOl%el1V#q}n*tF{O4IyPDmwKf9Z}Oq$uuj= zESH65)3TZ;8FOV(N%K!yS)^vzY?!iAK}7=g_T=jut|LAo=NqwkRjNcSz$gw?g&LSB%=tsu&h8 z1cEYg5R{w$3CuBzo5M`^5mOu9~ zF#3BY9XjUZ!LpmrQdzsx?D}zLLE9cDQXt6jbr7A#kJpS#Ny%FL7X{fxV|Tk36&E{) zdT-t!%CC?xxlx3PMnPpWlY7Q7Da!HoR`S;r&+XO(?&nFX9u}@T@~~oX@+_oNk*=kh=s!#L`ybsuCBRqUSDLXOxK(w%WNNM1uv}@4aZw66MG#PT#5 z5C+X!{G=y2px37651z;io>5Ms_s*kr+QKC3(hZl|>0>#A!& z*!pmV?K~Mte+ZM&B^tQFVbr7fmz<29#|=Zw_JPf%c?-*_a_ufazLnWe8j1A%6D5%V z3)w4qNhN}LR=-)R>@~a(c*HA`1FSOd2W#d)58Q8-cMrC{MfE%75uj2JJJ^ha2*w@$ z7Q`cMm+X06XyHucub@V+s+sfCVQDtZl&o(WOTI)fvyC=vHVPR}Q()vfP-(IiQ$ULW z`(hT`HO%>2Y(kb>QJ2HO>}JCp28$kmZ3D^{^uz?U_1|2?PXv6g1NHzM{sbL;gG7pe zy9R8V9f(oGW8z10BX-1cHp^_tHxf9Y?K%9%u + + 71c + + + + + + + + + diff --git a/docs/source/pythonapi/examples/mgxs/transport-xs.xls b/docs/source/pythonapi/examples/mgxs/transport-xs.xls new file mode 100644 index 0000000000000000000000000000000000000000..86a8cee39962fec9c37bb88dddedbafc034ce043 GIT binary patch literal 5632 zcmeI0YiJZ#6vzK}cJ@`0m>rXd5yCW}@r59zAhl-VqfPrEG0_hZ3FvADn!4`lb|YvZ zCdT;5R>4nNL8N{uz7c$oh>Aq~ASgZv2ufn1RivdY3L>W4bIxSeo&6BD6hf6b%bvOC z+H8-)4+{#UM=@r#RE`%u?~^vWrFIs@`AFoRRhL(uP38XQtru(hf41gO`BdZR zj*3&m)=|__EHLZ_jkpG&ABOLv(IH4IkxU$>%u;= zXvW3*Umpuw7xt&WpMF$+@*81u{tDUbbJW>V$5$6`{Y%&pVOK@# z+P4n%S@oKM^St2Dz-nBao#R^m)z5&R0Y3wN2K)^88JLs|@arW%mHBnedDU|M1K`&Q z{$FQ|zI^rN{mj5Br0A1@iO-OvYZ}{W=8Kmq1eKc^UQ5M@`+p&~ZKLREY{CW^$EISs md)m;?wOo82ho^EP!}%RIQHx^h{&oEP`!6=g1nvG){C@x;tuRIa literal 0 HcmV?d00001 diff --git a/docs/source/pythonapi/examples/openmc-mgxs.ipynb b/docs/source/pythonapi/examples/openmc-mgxs.ipynb new file mode 100644 index 000000000..2aedc3121 --- /dev/null +++ b/docs/source/pythonapi/examples/openmc-mgxs.ipynb @@ -0,0 +1,1112 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates how to use the **``openmc.mgxs``** module to generate multi-group cross sections with OpenMC.\n", + "\n", + "**Note:** that 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, 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." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import openmc\n", + "import openmc.mgxs as mgxs\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Infinite Homogeneous Medium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first construct a simple homogeneous infinite medium problem to illustrate use of the `openmc.mgxs` module to generate multi-group cross sections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate Inputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we need to define materials that will be used in the problem. Before defining a material, we must create nuclides that are used in the material." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "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')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the nuclides we defined, we will now create a material for the homogeneous medium." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a Material and register the Nuclides\n", + "inf_medium = openmc.Material(name='moderator')\n", + "inf_medium.set_density('g/cc', 5.)\n", + "inf_medium.add_nuclide(h1, 0.028999667)\n", + "inf_medium.add_nuclide(o16, 0.01450188)\n", + "inf_medium.add_nuclide(u235, 0.000114142)\n", + "inf_medium.add_nuclide(u238, 0.006886019)\n", + "inf_medium.add_nuclide(zr90, 0.002116053)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With our material, we can now create a materials file object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a MaterialsFile, register all Materials, and export to XML\n", + "materials_file = openmc.MaterialsFile()\n", + "materials_file.default_xs = '71c'\n", + "materials_file.add_material(inf_medium)\n", + "materials_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's move on to the geometry. This problem will be a simple square cell with reflective boundary conditions to simulate an infinite homogeneous medium. The first step is to create the outer bounding surfaces of the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate boundary Planes\n", + "min_x = openmc.XPlane(boundary_type='reflective', x0=-0.63)\n", + "max_x = openmc.XPlane(boundary_type='reflective', x0=0.63)\n", + "min_y = openmc.YPlane(boundary_type='reflective', y0=-0.63)\n", + "max_y = openmc.YPlane(boundary_type='reflective', y0=0.63)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create a cell that is defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a Cell\n", + "cell = openmc.Cell(cell_id=1, name='cell')\n", + "\n", + "# Register bounding Surfaces with the Cell\n", + "cell.add_surface(surface=min_x, halfspace=+1)\n", + "cell.add_surface(surface=max_x, halfspace=-1)\n", + "cell.add_surface(surface=min_y, halfspace=+1)\n", + "cell.add_surface(surface=max_y, halfspace=-1)\n", + "\n", + "# Fill the Cell with the Material\n", + "cell.fill = inf_medium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "OpenMC requires that there is a \"root\" universe. Let us create a root universe and add our square cell to it." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate Universe\n", + "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", + "root_universe.add_cell(cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "openmc_geometry = openmc.Geometry()\n", + "openmc_geometry.root_universe = root_universe\n", + "\n", + "# Instantiate a GeometryFile\n", + "geometry_file = openmc.GeometryFile()\n", + "geometry_file.geometry = openmc_geometry\n", + "\n", + "# Export to \"geometry.xml\"\n", + "geometry_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we must define simulation parameters. In this case, we will use 10 inactive batches and 40 active batches each with 2500 particles." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# OpenMC simulation parameters\n", + "batches = 50\n", + "inactive = 10\n", + "particles = 2500\n", + "\n", + "# Instantiate a SettingsFile\n", + "settings_file = openmc.SettingsFile()\n", + "settings_file.batches = batches\n", + "settings_file.inactive = inactive\n", + "settings_file.particles = particles\n", + "settings_file.output = {'tallies': True, 'summary': True}\n", + "bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n", + "settings_file.set_source_space('box', bounds)\n", + "\n", + "# Export to \"settings.xml\"\n", + "settings_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are finally ready to make use of the `openmc.mgxs` module to generate multi-group cross sections! First, let's define a \"fine\" 8-group and \"coarse\" 2-group structures using the built-in `EnergyGroups` class." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a \"fine\" 8-group EneryGroups object\n", + "fine_groups = mgxs.EnergyGroups()\n", + "fine_groups.group_edges = np.array([0., 0.058e-6, 0.14e-6, 0.28e-6,\n", + " 0.625e-6, 4.e-6, 5.53e-3, 821.e-3, 20.])\n", + "\n", + "# Instantiate a \"coarse\" 2-group EneryGroups object\n", + "coarse_groups = mgxs.EnergyGroups()\n", + "coarse_groups.group_edges = np.array([0., 0.625e-6, 20.])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MultiGroupXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of generic and abstract `MultiGroupXS` class:\n", + "\n", + "* `TotalXS`\n", + "* `TransportXS`\n", + "* `AbsorptionXS`\n", + "* `CaptureXS`\n", + "* `FissionXS`\n", + "* `NuFissionXS`\n", + "* `ScatterXS`\n", + "* `NuScatterXS`\n", + "* `ScatterMatrixXS`\n", + "* `NuScatterMatrixXS`\n", + "* `Chi`\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 cross sections needed to run an OpenMOC simulation to verify the accuracy of our cross sections. In particular, we will define total, nu-fission, nu-scatter and chi cross sections for our infinite medium cell as the domain and our fine 8-group structure as our energy groups." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate cross sections needed for an OpenMOC simulation\n", + "transport = mgxs.TransportXS(domain=cell, domain_type='cell', groups=fine_groups)\n", + "nufission = mgxs.NuFissionXS(domain=cell, domain_type='cell', groups=fine_groups)\n", + "nuscatter = mgxs.NuScatterMatrixXS(domain=cell, domain_type='cell', groups=fine_groups)\n", + "chi = mgxs.Chi(domain=cell, domain_type='cell', groups=fine_groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we must instruct our multi-group cross section objects to generate the tallies needed to calculate each of them in OpenMC. This can be done with the `MultiGroupXS.create_tallies()` routine." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instruct each multi-group cross section to generate tallies\n", + "transport.create_tallies()\n", + "nufission.create_tallies()\n", + "nuscatter.create_tallies()\n", + "chi.create_tallies()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each multi-group cross section object stores its tallies in a Python dictionary called `tallies`. We can inspect the tallies in the dictionary for our `NuFission` object as follows. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'flux': Tally\n", + " \tID =\t10003\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", + " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", + " 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['flux']\n", + " \tEstimator =\ttracklength, 'nu-fission': Tally\n", + " \tID =\t10004\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", + " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", + " 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['nu-fission']\n", + " \tEstimator =\ttracklength}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nufission.tallies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `NuFission` object includes tracklength tallies for the 'nu-fission' and 'flux' scores in the 8-group structure in cell 1. Now that each multi-group cross section object contains the tallies that it needs, we must add these tallies to a `TalliesFile` object to generate the \"tallies.xml\" input file for OpenMC." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate an empty TalliesFile\n", + "tallies_file = openmc.TalliesFile()\n", + "\n", + "# Add transport tallies to the tallies file\n", + "for tally in transport.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Add nu-fission tallies to the tallies file\n", + "for tally in nufission.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Add nu-scatter tallies to the tallies file\n", + "for tally in nuscatter.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Add chi tallies to the tallies file \n", + "for tally in chi.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + " \n", + "# Export to \"tallies.xml\"\n", + "tallies_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we a have a complete set of inputs, so we can go ahead and run our simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Run OpenMC!\n", + "executor = openmc.Executor()\n", + "executor.run_simulation()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created a statepoint file with all the tally data in it. We begin our analysis here loading the statepoint file and 'reading' the results. By default, data from the statepoint file is only read into memory when it is requested. This helps keep the memory use to a minimum even when a statepoint file may be huge." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the last statepoint file\n", + "sp = openmc.StatePoint('statepoint.50.h5')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the statepoint file, our simulation also created a summary file which encapsulates information about the materials and geometry which is necessary for the `openmc.mgxs` module to properly process the tally data. We first create a summary object and link it with the statepoint." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the summary file and link it with the statepoint\n", + "su = openmc.Summary('summary.h5')\n", + "sp.link_with_summary(su)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The statepoint is now ready to be analyzed by our multi-group cross sections. The first step is to load the tallies from the statepoint into each object." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'tuple' object has no attribute '__name__'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the tallies from the statepoint into each MultiGroupXS object\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mtransport\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mnufission\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mnuscatter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mchi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mload_from_statepoint\u001b[1;34m(self, statepoint)\u001b[0m\n\u001b[0;32m 1216\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1217\u001b[0m \u001b[1;31m# Load the tallies from the statepoint using the parent class method\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1218\u001b[1;33m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mTransportXS\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatepoint\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1219\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1220\u001b[0m \u001b[1;31m# Use tally slicing to remove scatter-P0 data from scatter-P1 tally\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mload_from_statepoint\u001b[1;34m(self, statepoint)\u001b[0m\n\u001b[0;32m 429\u001b[0m \u001b[1;31m# the isotopic number densities as computed by OpenMC\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 430\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'cell'\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'distribcell'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 431\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstatepoint\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_cell_by_id\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 432\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'universe'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 433\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstatepoint\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_universe_by_id\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mdomain\u001b[1;34m(self, domain)\u001b[0m\n\u001b[0;32m 198\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mdomain\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetter\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 199\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 200\u001b[1;33m \u001b[0mcv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcheck_type\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'domain'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDOMAINS\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 201\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_domain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/checkvalue.pyc\u001b[0m in \u001b[0;36mcheck_type\u001b[1;34m(name, value, expected_type, expected_iter_type)\u001b[0m\n\u001b[0;32m 52\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0m_isinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexpected_type\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 53\u001b[0m msg = 'Unable to set \"{0}\" to \"{1}\" which is not of type \"{2}\"'.format(\n\u001b[1;32m---> 54\u001b[1;33m name, value, expected_type.__name__)\n\u001b[0m\u001b[0;32m 55\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'tuple' object has no attribute '__name__'" + ] + } + ], + "source": [ + "# Load the tallies from the statepoint into each MultiGroupXS object\n", + "transport.load_from_statepoint(sp)\n", + "nufission.load_from_statepoint(sp)\n", + "nuscatter.load_from_statepoint(sp)\n", + "chi.load_from_statepoint(sp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/pandas-dataframes.html) to compute cross sections from the tally data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "transport.compute_xs()\n", + "nufission.compute_xs()\n", + "nuscatter.compute_xs()\n", + "chi.compute_xs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voila! Our multi-group cross sections are now ready to rock 'n roll! Let's first inspect one of our cross sections by printing it to the screen." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "nufission.print_xs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since the `openmc.mgxs` module uses tally arithmetic under-the-hood, the cross section is stored as a \"derived\" tally. This means that it can be queried and manipulated using all of the same method supported for the `Tally` class in the OpenMC Python API. For example, we can construct a Pandas DataFrame of the multi-group cross section data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "df = nuscatter.get_pandas_dataframe()\n", + "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": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "transport.export_xs_data(filename='transport-xs', format='excel')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code snippet shows how to export all of four cross sections to the same HDF5 binary data store." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "transport.build_hdf5_store(filename='mgxs', append=True)\n", + "nufission.build_hdf5_store(filename='mgxs', append=True)\n", + "nuscatter.build_hdf5_store(filename='mgxs', append=True)\n", + "chi.build_hdf5_store(filename='mgxs', append=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course it is always a good idea to verify that one's cross sections are accurate. We can easily do so here with the deterministic transport code OpenMOC. First, we will use OpenCG to reconstruct our OpenMC geometry from the summary file into a equivalent OpenMOC geometry." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Import OpenMOC and the OpenMOC/OpenCG compatibility module\n", + "import openmoc\n", + "from openmoc.compatible import get_openmoc_geometry\n", + "\n", + "# Create an OpenCG Geometry from the OpenMC Geometry stored in the summary\n", + "su.make_opencg_geometry()\n", + "\n", + "# Create an OpenMOC Geometry from the OpenCG Geometry\n", + "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can inject the multi-group cross sections into the equivalent infinite homogeneous medium OpenMOC geometry." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Get all OpenMOC cells in the gometry\n", + "openmoc_cells = openmoc_geometry.getRootUniverse().getAllCells()\n", + "\n", + "# Inject multi-group cross sections into OpenMOC Materials\n", + "# NOTE: This code will work for 1, 10, or 1,000s of cells\n", + "# as is the case for a complicated geometry like BEAVRS\n", + "for cell_id, cell in openmoc_cells.items():\n", + " \n", + " # Get a reference to the Material filling this Cell\n", + " openmoc_material = cell.getFillMaterial()\n", + " \n", + " # Set the number of energy groups for the Material\n", + " openmoc_material.setNumEnergyGroups(fine_groups.num_groups)\n", + " \n", + " # Inject NumPy arrays of cross section data into the Material\n", + " openmoc_material.setSigmaT(transport.get_xs().flatten())\n", + " openmoc_material.setNuSigmaF(nufission.get_xs().flatten())\n", + " openmoc_material.setSigmaS(nuscatter.get_xs().flatten())\n", + " openmoc_material.setChi(chi.get_xs().flatten())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to run OpenMOC to verify our cross-sections from OpenMC." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Generate tracks for OpenMOC\n", + "openmoc_geometry.initializeFlatSourceRegions()\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, 128, 0.1)\n", + "track_generator.generateTracks()\n", + "\n", + "# Run OpenMOC\n", + "solver = openmoc.CPUSolver(track_generator)\n", + "solver.computeEigenvalue()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We report the eigenvalues computed by OpenMC and OpenMOC here together to summarize our results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Print report of keff and bias with OpenMC\n", + "openmoc_keff = solver.getKeff()\n", + "openmc_keff = sp.k_combined[0]\n", + "bias = (openmoc_keff - openmc_keff) * 1e5\n", + "\n", + "print('openmc keff = {0:1.6f}'.format(openmc_keff))\n", + "print('openmoc keff = {0:1.6f}'.format(openmoc_keff))\n", + "print('bias [pcm]: {0:1.1f}'.format(bias))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although there is a non-trivial bias, one can easily run the preceding code with more particle histories to show that both codes converge to the same eigenvalue with <10 pcm bias. It should be noted that this discrepancy is partially due to use of tracklength tallies for `NuFission`, while one must use more slowly converging analog tallies must be used for `TransportXS`, `NuScatterMatrixXS` and `Chi` (which require an 'energyout' filter)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fuel Pin Cell" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we show how to compute multi-group cross sections for a fuel pin cell. In addition, we will illustrate how to use some of the more advanced features in `openmc.mgxs` such as nuclide-by-nuclide microscopic cross section tallies and downstream energy group condensation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate Inputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "this time we separate our nuclides into three distinct materials for water, clad and fuel." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# 1.6 enriched fuel\n", + "fuel = openmc.Material(name='1.6% Fuel')\n", + "fuel.set_density('g/cm3', 10.31341)\n", + "fuel.add_nuclide(u235, 3.7503e-4)\n", + "fuel.add_nuclide(u238, 2.2625e-2)\n", + "fuel.add_nuclide(o16, 4.6007e-2)\n", + "\n", + "# borated water\n", + "water = openmc.Material(name='Borated Water')\n", + "water.set_density('g/cm3', 0.740582)\n", + "water.add_nuclide(h1, 4.9457e-2)\n", + "water.add_nuclide(o16, 2.4732e-2)\n", + "\n", + "# zircaloy\n", + "zircaloy = openmc.Material(name='Zircaloy')\n", + "zircaloy.set_density('g/cm3', 6.55)\n", + "zircaloy.add_nuclide(zr90, 7.2758e-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With our materials, we can now create a materials file object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a MaterialsFile, add Materials\n", + "materials_file = openmc.MaterialsFile()\n", + "materials_file.add_material(fuel)\n", + "materials_file.add_material(water)\n", + "materials_file.add_material(zircaloy)\n", + "materials_file.default_xs = '71c'\n", + "\n", + "# Export to \"materials.xml\"\n", + "materials_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's move on to the geometry. Our problem will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces -- in this case two cylinders and six reflective planes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create cylinders for the fuel and clad\n", + "fuel_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218)\n", + "clad_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720)\n", + "\n", + "# Create boundary planes to surround the geometry\n", + "# Use both reflective and vacuum boundaries to make life interesting\n", + "min_x = openmc.XPlane(x0=-0.63, boundary_type='reflective')\n", + "max_x = openmc.XPlane(x0=+0.63, boundary_type='reflective')\n", + "min_y = openmc.YPlane(y0=-0.63, boundary_type='reflective')\n", + "max_y = openmc.YPlane(y0=+0.63, boundary_type='reflective')\n", + "min_z = openmc.ZPlane(z0=-0.63, boundary_type='reflective')\n", + "max_z = openmc.ZPlane(z0=+0.63, boundary_type='reflective')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create cells that are defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create a Universe to encapsulate a fuel pin\n", + "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", + "\n", + "# Create fuel Cell\n", + "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", + "fuel_cell.fill = fuel\n", + "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", + "pin_cell_universe.add_cell(fuel_cell)\n", + "\n", + "# Create a clad Cell\n", + "clad_cell = openmc.Cell(name='1.6% Clad')\n", + "clad_cell.fill = zircaloy\n", + "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", + "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "pin_cell_universe.add_cell(clad_cell)\n", + "\n", + "# Create a moderator Cell\n", + "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", + "moderator_cell.fill = water\n", + "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", + "pin_cell_universe.add_cell(moderator_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "OpenMC requires that there is a \"root\" universe. Let us create a root cell that is filled by the pin cell universe and then assign it to the root universe." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create root Cell\n", + "root_cell = openmc.Cell(name='root cell')\n", + "root_cell.fill = pin_cell_universe\n", + "\n", + "# Add boundary planes\n", + "root_cell.add_surface(min_x, halfspace=+1)\n", + "root_cell.add_surface(max_x, halfspace=-1)\n", + "root_cell.add_surface(min_y, halfspace=+1)\n", + "root_cell.add_surface(max_y, halfspace=-1)\n", + "\n", + "# Create root Universe\n", + "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", + "root_universe.add_cell(root_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "openmc_geometry = openmc.Geometry()\n", + "openmc_geometry.root_universe = root_universe\n", + "\n", + "# Instantiate a GeometryFile\n", + "geometry_file = openmc.GeometryFile()\n", + "geometry_file.geometry = openmc_geometry\n", + "\n", + "# Export to \"geometry.xml\"\n", + "geometry_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will reuse our settings from the previous simulation. Now, we let's create transport, nu-fission, nu-scatter and chi multi-group cross sections for each cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Extract all Cells filled by Materials\n", + "openmc_cells = openmc_geometry.get_all_material_cells()\n", + "\n", + "# Create dictionary to store multi-group cross sections for all cells\n", + "xs_library = {}\n", + "\n", + "# Instantiate 8-group cross sections for each cell\n", + "for cell in openmc_cells:\n", + " xs_library[cell.id] = {}\n", + " xs_library[cell.id]['transport'] = mgxs.TransportXS(groups=fine_groups)\n", + " xs_library[cell.id]['nu-fission'] = mgxs.NuFissionXS(groups=fine_groups)\n", + " xs_library[cell.id]['nu-scatter'] = mgxs.NuScatterMatrixXS(groups=fine_groups)\n", + " xs_library[cell.id]['chi'] = mgxs.Chi(groups=fine_groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, we did not give our cross sections a spatial domain in their constructors. Instead, we will loop over all cells to set each cross sections domain. In addition, we will set each cross section to tally cross sections on a per-nuclide basis through the use of the `by_nuclide` instance attribute. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate an empty TalliesFile\n", + "tallies_file = openmc.TalliesFile()\n", + "\n", + "# Iterate over all cells and cross section types\n", + "for cell in openmc_cells:\n", + " for rxn_type in xs_library[cell.id].keys():\n", + " print(cell.name, rxn_type)\n", + "\n", + " # Set the cross sections domain type to the cell\n", + " xs_library[cell.id][rxn_type].domain = cell\n", + " xs_library[cell.id][rxn_type].domain_type = 'cell'\n", + " \n", + " # Tally cross sections by nuclide (e.g., micro cross sections)\n", + " xs_library[cell.id][rxn_type].by_nuclide = True\n", + " \n", + " # Create OpenMC tallies for this cross section\n", + " xs_library[cell.id][rxn_type].create_tallies()\n", + " \n", + " # Add OpenMC tallies to the tallies file for XML generation\n", + " for tally in xs_library[cell.id][rxn_type].tallies.values():\n", + " print(tally)\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Export to \"tallies.xml\"\n", + "tallies_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we a have a complete set of inputs, so we can go ahead and run our simulation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Delete old HDF5 files\n", + "!rm *.h5\n", + "\n", + "# Run OpenMC!\n", + "executor = openmc.Executor()\n", + "executor.run_simulation()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created a statepoint file with all the tally data in it. As before, we begin our analysis here loading the statepoint file." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the last statepoint and summary files\n", + "sp = openmc.StatePoint('statepoint.50.h5')\n", + "su = openmc.Summary('summary.h5')\n", + "sp.link_with_summary(su)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Iterate over all cells and cross section types\n", + "for cell in openmc_cells:\n", + " for rxn_type in xs_library[cell.id].keys():\n", + " xs_library[cell.id][rxn_type].load_from_statepoint(sp)\n", + " xs_library[cell.id][rxn_type].compute_xs()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 70ff46406..f227e2f71 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -385,7 +385,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDAxOjE0\nOjM0LTA0OjAwS1fWPgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QwMToxNDozNC0wNDow\nMDoKboIAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDExOjE3\nOjA5LTA0OjAw0jfqaAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QxMToxNzowOS0wNDow\nMKNqUtQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -576,7 +576,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 01:14:34\n", + " Date/Time: 2015-10-03 11:17:09\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -644,20 +644,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.2000E+00 seconds\n", - " Reading cross sections = 2.5000E-01 seconds\n", - " Total time in simulation = 1.8967E+01 seconds\n", - " Time in transport only = 1.8921E+01 seconds\n", - " Time in inactive batches = 2.8760E+00 seconds\n", - " Time in active batches = 1.6091E+01 seconds\n", + " Total time for initialization = 7.1300E-01 seconds\n", + " Reading cross sections = 1.5900E-01 seconds\n", + " Total time in simulation = 1.5700E+01 seconds\n", + " Time in transport only = 1.5659E+01 seconds\n", + " Time in inactive batches = 2.1510E+00 seconds\n", + " Time in active batches = 1.3549E+01 seconds\n", " Time synchronizing fission bank = 3.0000E-03 seconds\n", " Sampling source sites = 3.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 2.0192E+01 seconds\n", - " Calculation Rate (inactive) = 4346.31 neutrons/second\n", - " Calculation Rate (active) = 2330.50 neutrons/second\n", + " Total time elapsed = 1.6427E+01 seconds\n", + " Calculation Rate (inactive) = 5811.25 neutrons/second\n", + " Calculation Rate (active) = 2767.73 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", diff --git a/docs/source/pythonapi/examples/plots.xml b/docs/source/pythonapi/examples/plots.xml new file mode 100644 index 000000000..512070a33 --- /dev/null +++ b/docs/source/pythonapi/examples/plots.xml @@ -0,0 +1,8 @@ + + + + 0 0 0 + 21.5 21.5 + 250 250 + + diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index 51ca6adcf..de6234a72 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -353,7 +353,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDI6NTE6MjktMDQ6MDANEGNoAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAyOjUxOjI5LTA0OjAwfE3b1AAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMTE6MTc6MDItMDQ6MDDQML6SAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDExOjE3OjAyLTA0OjAwoW0GLgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -419,7 +419,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": true }, @@ -438,7 +438,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": false, "scrolled": true @@ -465,7 +465,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 02:51:29\n", + " Date/Time: 2015-10-03 11:17:02\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -533,8 +533,108 @@ " 39/1 1.01971 1.03820 +/- 0.00312\n", " 40/1 1.01491 1.03743 +/- 0.00311\n", " 41/1 1.02779 1.03712 +/- 0.00303\n", - " 42/1 1.03047 1.03691 +/- 0.00294\n" + " 42/1 1.03047 1.03691 +/- 0.00294\n", + " 43/1 1.02305 1.03649 +/- 0.00288\n", + " 44/1 1.07854 1.03773 +/- 0.00305\n", + " 45/1 1.04412 1.03791 +/- 0.00297\n", + " 46/1 1.05139 1.03828 +/- 0.00291\n", + " 47/1 1.05357 1.03870 +/- 0.00286\n", + " 48/1 1.06435 1.03937 +/- 0.00287\n", + " 49/1 1.02632 1.03904 +/- 0.00281\n", + " 50/1 1.05201 1.03936 +/- 0.00276\n", + " 51/1 1.04582 1.03952 +/- 0.00270\n", + " 52/1 1.02056 1.03907 +/- 0.00267\n", + " 53/1 1.06448 1.03966 +/- 0.00267\n", + " 54/1 1.03609 1.03958 +/- 0.00261\n", + " 55/1 1.02701 1.03930 +/- 0.00257\n", + " 56/1 1.04865 1.03950 +/- 0.00252\n", + " 57/1 1.06310 1.04000 +/- 0.00252\n", + " 58/1 1.02975 1.03979 +/- 0.00247\n", + " 59/1 1.03922 1.03978 +/- 0.00242\n", + " 60/1 1.07259 1.04043 +/- 0.00246\n", + " 61/1 1.04555 1.04053 +/- 0.00242\n", + " 62/1 1.01950 1.04013 +/- 0.00240\n", + " 63/1 1.04618 1.04024 +/- 0.00236\n", + " 64/1 1.02489 1.03996 +/- 0.00233\n", + " 65/1 1.06850 1.04048 +/- 0.00235\n", + " 66/1 1.03623 1.04040 +/- 0.00231\n", + " 67/1 0.99892 1.03967 +/- 0.00238\n", + " 68/1 1.05557 1.03995 +/- 0.00236\n", + " 69/1 1.01211 1.03948 +/- 0.00236\n", + " 70/1 1.04679 1.03960 +/- 0.00233\n", + " 71/1 1.03461 1.03952 +/- 0.00229\n", + " 72/1 1.01993 1.03920 +/- 0.00227\n", + " 73/1 1.04742 1.03933 +/- 0.00224\n", + " 74/1 1.05269 1.03954 +/- 0.00222\n", + " 75/1 1.05696 1.03981 +/- 0.00220\n", + " 76/1 1.05904 1.04010 +/- 0.00218\n", + " 77/1 1.05930 1.04039 +/- 0.00217\n", + " 78/1 1.03375 1.04029 +/- 0.00214\n", + " 79/1 1.07044 1.04073 +/- 0.00215\n", + " 80/1 1.04144 1.04074 +/- 0.00212\n", + " 81/1 1.06296 1.04105 +/- 0.00212\n", + " 82/1 1.04630 1.04112 +/- 0.00209\n", + " 83/1 1.03772 1.04108 +/- 0.00206\n", + " 84/1 1.03774 1.04103 +/- 0.00203\n", + " 85/1 1.03984 1.04101 +/- 0.00200\n", + " 86/1 1.03040 1.04087 +/- 0.00198\n", + " 87/1 1.03484 1.04080 +/- 0.00196\n", + " 88/1 1.03820 1.04076 +/- 0.00193\n", + " 89/1 1.04654 1.04084 +/- 0.00191\n", + " 90/1 1.03377 1.04075 +/- 0.00189\n", + " 91/1 1.03370 1.04066 +/- 0.00187\n", + " 92/1 1.04172 1.04067 +/- 0.00184\n", + " 93/1 1.04945 1.04078 +/- 0.00182\n", + " 94/1 1.03360 1.04069 +/- 0.00181\n", + " 95/1 1.06547 1.04099 +/- 0.00181\n", + " 96/1 1.04340 1.04101 +/- 0.00179\n", + " 97/1 1.07502 1.04140 +/- 0.00181\n", + " 98/1 1.05391 1.04155 +/- 0.00179\n", + " 99/1 1.05622 1.04171 +/- 0.00178\n", + " 100/1 1.01519 1.04142 +/- 0.00179\n", + " Creating state point statepoint.100.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 5.2900E-01 seconds\n", + " Reading cross sections = 9.6000E-02 seconds\n", + " Total time in simulation = 3.1874E+02 seconds\n", + " Time in transport only = 3.1866E+02 seconds\n", + " Time in inactive batches = 1.3286E+01 seconds\n", + " Time in active batches = 3.0545E+02 seconds\n", + " Time synchronizing fission bank = 1.1000E-02 seconds\n", + " Sampling source sites = 7.0000E-03 seconds\n", + " SEND/RECV source sites = 3.0000E-03 seconds\n", + " Time accumulating tallies = 2.2000E-02 seconds\n", + " Total time for finalization = 1.7800E-01 seconds\n", + " Total time elapsed = 3.1947E+02 seconds\n", + " Calculation Rate (inactive) = 3763.36 neutrons/second\n", + " Calculation Rate (active) = 1473.24 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.04100 +/- 0.00169\n", + " k-effective (Track-length) = 1.04142 +/- 0.00179\n", + " k-effective (Absorption) = 1.04380 +/- 0.00147\n", + " Combined k-effective = 1.04287 +/- 0.00130\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -558,7 +658,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true @@ -578,11 +678,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10000\n", + "\tName =\t\n", + "\tFilters =\t\n", + " \t\tmesh\t[10000]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'flux', u'fission']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], "source": [ "tally = sp.get_tally(scores=['flux'])\n", "print(tally)" @@ -597,11 +713,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[ 0.41271426, 0. ]],\n", + "\n", + " [[ 0.40846766, 0. ]],\n", + "\n", + " [[ 0.4112029 , 0. ]],\n", + "\n", + " ..., \n", + " [[ 0.41437289, 0. ]],\n", + "\n", + " [[ 0.41376468, 0. ]],\n", + "\n", + " [[ 0.41312074, 0. ]]])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "tally.sum" ] @@ -615,11 +753,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(10000, 1, 2)\n" + ] + }, + { + "data": { + "text/plain": [ + "(array([[[ 0.00458571, 0. ]],\n", + " \n", + " [[ 0.00453853, 0. ]],\n", + " \n", + " [[ 0.00456892, 0. ]],\n", + " \n", + " ..., \n", + " [[ 0.00460414, 0. ]],\n", + " \n", + " [[ 0.00459739, 0. ]],\n", + " \n", + " [[ 0.00459023, 0. ]]]),\n", + " array([[[ 2.02702426e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.77108625e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.79568064e-05, 0.00000000e+00]],\n", + " \n", + " ..., \n", + " [[ 1.83114148e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.69970626e-05, 0.00000000e+00]],\n", + " \n", + " [[ 1.92143217e-05, 0.00000000e+00]]]))" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "print(tally.mean.shape)\n", "(tally.mean, tally.std_dev)" @@ -634,11 +813,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10000\n", + "\tName =\t\n", + "\tFilters =\t\n", + " \t\tmesh\t[10000]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'flux']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], "source": [ "flux = tally.get_slice(scores=['flux'])\n", "fission = tally.get_slice(scores=['fission'])\n", @@ -654,7 +849,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -668,11 +863,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ncPmIaKHPh5wAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "fig = plt.subplot(121)\n", "fig.imshow(flux.mean)\n", @@ -689,11 +905,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Determine relative error\n", "relative_error = np.zeros_like(flux.std_dev)\n", @@ -720,11 +947,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([ (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [-0.5991379733562734, 0.6213299732428319, -0.5049581697849825], 1.4308796774550836),\n", + " (1.0, [0.08159183470384083, 0.37187405724079425, -0.4569273259677805], [0.6943502674814661, -0.18996972225593808, 0.694110373553384], 1.8499326750790277),\n", + " (1.0, [-0.2283457014858208, -0.3149356437736135, -0.6287339985223156], [0.22841158666373973, -0.9428738529578353, 0.24252225565130936], 2.8993105331976654),\n", + " ...,\n", + " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [0.871391386295745, 0.3866181159860615, 0.30199914615933615], 2.2329770939373517),\n", + " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622),\n", + " (1.0, [-0.20844939420957254, 0.043779246455180054, -0.22209004880139005], [-0.4649777417907873, 0.38973845929247963, 0.7949211489119309], 1.6836109244016622)], \n", + " dtype=[('wgt', '" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create log-spaced energy bins from 1 keV to 100 MeV\n", "energy_bins = np.logspace(-3,1)\n", @@ -786,11 +1071,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 0.5)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.quiver(sp.source['xyz'][:,0], sp.source['xyz'][:,1],\n", " sp.source['uvw'][:,0], sp.source['uvw'][:,1],\n", diff --git a/docs/source/pythonapi/examples/settings.xml b/docs/source/pythonapi/examples/settings.xml new file mode 100644 index 000000000..b8d6b36e1 --- /dev/null +++ b/docs/source/pythonapi/examples/settings.xml @@ -0,0 +1,17 @@ + + + + 2500 + 50 + 10 + + + + -0.63 -0.63 -0.63 0.63 0.63 0.63 + + + + true + true + + diff --git a/docs/source/pythonapi/examples/tallies.xml b/docs/source/pythonapi/examples/tallies.xml new file mode 100644 index 000000000..f72c8ea83 --- /dev/null +++ b/docs/source/pythonapi/examples/tallies.xml @@ -0,0 +1,39 @@ + + + + + + total + scatter-P1 nu-fission + analog + + + + + total + flux total + analog + + + + + total + flux nu-fission + tracklength + + + + + + total + nu-scatter + analog + + + + + total + nu-fission + analog + + diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 1196c27e1..4ce764182 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -369,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMDI6NTA6NDctMDQ6MDB0gnqMAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDAyOjUwOjQ3LTA0OjAwBd/CMAAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMTE6MTY6NTQtMDQ6MDAUwu7yAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDExOjE2OjU0LTA0OjAwZZ9WTgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -563,6 +563,7 @@ "name": "stdout", "output_type": "stream", "text": [ + "rm: cannot remove ‘statepoint.*’: No such file or directory\n", "\n", " .d88888b. 888b d888 .d8888b.\n", " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", @@ -580,7 +581,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 02:50:47\n", + " Date/Time: 2015-10-03 11:16:55\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -636,20 +637,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.1480E+00 seconds\n", - " Reading cross sections = 2.9100E-01 seconds\n", - " Total time in simulation = 2.7345E+01 seconds\n", - " Time in transport only = 2.7286E+01 seconds\n", - " Time in inactive batches = 5.8310E+00 seconds\n", - " Time in active batches = 2.1514E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 6.8600E-01 seconds\n", + " Reading cross sections = 1.5400E-01 seconds\n", + " Total time in simulation = 2.4023E+01 seconds\n", + " Time in transport only = 2.3994E+01 seconds\n", + " Time in inactive batches = 3.1010E+00 seconds\n", + " Time in active batches = 2.0922E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 2.8526E+01 seconds\n", - " Calculation Rate (inactive) = 2143.71 neutrons/second\n", - " Calculation Rate (active) = 1743.05 neutrons/second\n", + " Total time elapsed = 2.4724E+01 seconds\n", + " Calculation Rate (inactive) = 4030.96 neutrons/second\n", + " Calculation Rate (active) = 1792.37 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -721,7 +722,20 @@ "collapsed": false, "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "KeyError", + "evalue": "10003", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the summary file and link with statepoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0msu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'summary.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlink_with_summary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msu\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/statepoint.pyc\u001b[0m in \u001b[0;36mlink_with_summary\u001b[1;34m(self, summary)\u001b[0m\n\u001b[0;32m 610\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mtally_id\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtally\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 611\u001b[0m \u001b[1;31m# Get the Tally name from the summary file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 612\u001b[1;33m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtally_id\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 613\u001b[0m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_summary\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 10003" + ] + } + ], "source": [ "# Load the summary file and link with statepoint\n", "su = Summary('summary.h5')\n", @@ -739,47 +753,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "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", - "
nuclidescoremeanstd. dev.
0total(nu-fission / absorption)1.0463530.00935
\n", - "
" - ], - "text/plain": [ - " nuclide score mean std. dev.\n", - "0 total (nu-fission / absorption) 1.046353 0.00935" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute k-infinity using tally arithmetic\n", "fiss_rate = sp.get_tally(name='fiss. rate')\n", @@ -799,49 +777,11 @@ }, { "cell_type": "code", - "execution_count": 27, + "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", - "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)totalabsorption0.958730.00774
\n", - "
" - ], - "text/plain": [ - " energy [MeV] nuclide score mean std. dev.\n", - "0 (0.0e+00 - 6.2e-01) total absorption 0.95873 0.00774" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute resonance escape probability using tally arithmetic\n", "therm_abs_rate = sp.get_tally(name='therm. abs. rate')\n", @@ -859,47 +799,11 @@ }, { "cell_type": "code", - "execution_count": 28, + "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", - "
nuclidescoremeanstd. dev.
0totalnu-fission1.0916220.011163
\n", - "
" - ], - "text/plain": [ - " nuclide score mean std. dev.\n", - "0 total nu-fission 1.091622 0.011163" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute fast fission factor factor using tally arithmetic\n", "therm_fiss_rate = sp.get_tally(name='therm. fiss. rate')\n", @@ -918,51 +822,11 @@ }, { "cell_type": "code", - "execution_count": 29, + "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", - "
energy [MeV]cellnuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)10000totalabsorption0.8020120.006609
\n", - "
" - ], - "text/plain": [ - " energy [MeV] cell nuclide score mean std. dev.\n", - "0 (0.0e+00 - 6.2e-01) 10000 total absorption 0.802012 0.006609" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute thermal flux utilization factor using tally arithmetic\n", "fuel_therm_abs_rate = sp.get_tally(name='fuel therm. abs. rate')\n", @@ -979,49 +843,11 @@ }, { "cell_type": "code", - "execution_count": 30, + "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", - "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(nu-fission / absorption)1.2466040.011825
\n", - "
" - ], - "text/plain": [ - " energy [MeV] nuclide score mean std. dev.\n", - "0 (0.0e+00 - 6.2e-01) total (nu-fission / absorption) 1.246604 0.011825" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Compute neutrons produced per absorption (eta) using tally arithmetic\n", "eta = therm_fiss_rate / fuel_therm_abs_rate\n", @@ -1037,52 +863,11 @@ }, { "cell_type": "code", - "execution_count": 31, + "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", - "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(((absorption * nu-fission) * absorption) * (n...1.0463530.01894
\n", - "
" - ], - "text/plain": [ - " energy [MeV] nuclide \\\n", - "0 (0.0e+00 - 6.2e-01) total \n", - "\n", - " score mean std. dev. \n", - "0 (((absorption * nu-fission) * absorption) * (n... 1.046353 0.01894 " - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "keff = res_esc * fast_fiss * therm_util * eta\n", "keff.get_pandas_dataframe()" @@ -1099,7 +884,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false, "scrolled": true @@ -1115,131 +900,11 @@ }, { "cell_type": "code", - "execution_count": 33, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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 [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)(U-238 / total)(nu-fission / flux)6.641746e-076.859257e-09
110000(0.0e+00 - 6.3e-07)(U-238 / total)(scatter / flux)2.099861e-011.966887e-03
210000(0.0e+00 - 6.3e-07)(U-235 / total)(nu-fission / flux)3.556665e-013.717881e-03
310000(0.0e+00 - 6.3e-07)(U-235 / total)(scatter / flux)5.554650e-035.218094e-05
410000(6.3e-07 - 2.0e+01)(U-238 / total)(nu-fission / flux)7.165057e-035.625590e-05
510000(6.3e-07 - 2.0e+01)(U-238 / total)(scatter / flux)2.276535e-018.544314e-04
610000(6.3e-07 - 2.0e+01)(U-235 / total)(nu-fission / flux)8.089493e-035.080374e-05
710000(6.3e-07 - 2.0e+01)(U-235 / total)(scatter / flux)3.370111e-031.361116e-05
\n", - "
" - ], - "text/plain": [ - " cell energy [MeV] nuclide score \\\n", - "0 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (nu-fission / flux) \n", - "1 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (scatter / flux) \n", - "2 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (nu-fission / flux) \n", - "3 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (scatter / flux) \n", - "4 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (nu-fission / flux) \n", - "5 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (scatter / flux) \n", - "6 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (nu-fission / flux) \n", - "7 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (scatter / flux) \n", - "\n", - " mean std. dev. \n", - "0 6.641746e-07 6.859257e-09 \n", - "1 2.099861e-01 1.966887e-03 \n", - "2 3.556665e-01 3.717881e-03 \n", - "3 5.554650e-03 5.218094e-05 \n", - "4 7.165057e-03 5.625590e-05 \n", - "5 2.276535e-01 8.544314e-04 \n", - "6 8.089493e-03 5.080374e-05 \n", - "7 3.370111e-03 1.361116e-05 " - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "fuel_xs = fuel_rxn_rates / flux\n", "fuel_xs.get_pandas_dataframe()" @@ -1254,23 +919,11 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 6.64174599e-07]\n", - " [ 3.55666541e-01]]\n", - "\n", - " [[ 7.16505734e-03]\n", - " [ 8.08949336e-03]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Show how to use Tally.get_values(...) with a CrossScore\n", "nu_fiss_xs = fuel_xs.get_values(scores=['(nu-fission / flux)'])\n", @@ -1286,21 +939,11 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.00555465]]\n", - "\n", - " [[ 0.00337011]]]\n" - ] - } - ], + "outputs": [], "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", @@ -1310,20 +953,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[[ 0.22765348]\n", - " [ 0.00337011]]]\n" - ] - } - ], + "outputs": [], "source": [ "# Show how to use Tally.get_values(...) with a CrossFilter and CrossScore\n", "fast_scatter_xs = fuel_xs.get_values(filters=['energy'], \n", @@ -1341,81 +975,11 @@ }, { "cell_type": "code", - "execution_count": 37, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)U-238nu-fission0.0000021.284890e-08
110000(0.0e+00 - 6.3e-07)U-235nu-fission0.8679827.022256e-03
210000(6.3e-07 - 2.0e+01)U-238nu-fission0.0828016.087096e-04
310000(6.3e-07 - 2.0e+01)U-235nu-fission0.0934845.275039e-04
\n", - "
" - ], - "text/plain": [ - " cell energy [MeV] nuclide score mean std. dev.\n", - "0 10000 (0.0e+00 - 6.3e-07) U-238 nu-fission 0.000002 1.284890e-08\n", - "1 10000 (0.0e+00 - 6.3e-07) U-235 nu-fission 0.867982 7.022256e-03\n", - "2 10000 (6.3e-07 - 2.0e+01) U-238 nu-fission 0.082801 6.087096e-04\n", - "3 10000 (6.3e-07 - 2.0e+01) U-235 nu-fission 0.093484 5.275039e-04" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# \"Slice\" the nu-fission data into a new derived Tally\n", "nu_fission_rates = fuel_rxn_rates.get_slice(scores=['nu-fission'])\n", @@ -1424,131 +988,11 @@ }, { "cell_type": "code", - "execution_count": 38, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \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 [MeV]nuclidescoremeanstd. dev.
010002(1.0e-08 - 1.1e-07)H-1scatter4.6205250.038249
110002(1.1e-07 - 1.2e-06)H-1scatter2.0368410.013203
210002(1.2e-06 - 1.3e-05)H-1scatter1.6599160.010107
310002(1.3e-05 - 1.4e-04)H-1scatter1.8615460.013328
410002(1.4e-04 - 1.5e-03)H-1scatter2.0496640.008215
510002(1.5e-03 - 1.6e-02)H-1scatter2.1621570.010245
610002(1.6e-02 - 1.7e-01)H-1scatter2.2244960.013796
710002(1.7e-01 - 1.9e+00)H-1scatter1.9975850.009161
810002(1.9e+00 - 2.0e+01)H-1scatter0.3734720.003922
\n", - "
" - ], - "text/plain": [ - " cell energy [MeV] nuclide score mean std. dev.\n", - "0 10002 (1.0e-08 - 1.1e-07) H-1 scatter 4.620525 0.038249\n", - "1 10002 (1.1e-07 - 1.2e-06) H-1 scatter 2.036841 0.013203\n", - "2 10002 (1.2e-06 - 1.3e-05) H-1 scatter 1.659916 0.010107\n", - "3 10002 (1.3e-05 - 1.4e-04) H-1 scatter 1.861546 0.013328\n", - "4 10002 (1.4e-04 - 1.5e-03) H-1 scatter 2.049664 0.008215\n", - "5 10002 (1.5e-03 - 1.6e-02) H-1 scatter 2.162157 0.010245\n", - "6 10002 (1.6e-02 - 1.7e-01) H-1 scatter 2.224496 0.013796\n", - "7 10002 (1.7e-01 - 1.9e+00) H-1 scatter 1.997585 0.009161\n", - "8 10002 (1.9e+00 - 2.0e+01) H-1 scatter 0.373472 0.003922" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "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", diff --git a/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data b/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data new file mode 100644 index 0000000000000000000000000000000000000000..b108b863c52d6d385677f2f730b589892ee66001 GIT binary patch literal 71256 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%0AB9)@AO7*7 znjeOawEDCBL;u4+q8=8f{ZEznEdRlyy@VdL_)LG`(OyCi8qf3(oul1xgdPSy_~bb| ze0kf!_cZ>&)_(?srnSQ{dzGyf6UE!I2OZvyY5_77bZ~FGV+YZiZ z^v~9h7WGZ~$2#g7pRXS;`;E#?`>?OB6rQc0E$W-%V;yycSJ&@GeGwn)s4F~MKOXHY z*U`s5EM8u&qaUv$3kSTsTt^@4sC#+2jy~2=_wsTbeJW4z^0B_nI#5_g-OJOu^#T2d zb>+v#H|ywQ9d$2{b@YXvwEC<0hjsL6+=o2Yc$WXjKhziFM*LkXf382AhjsMH|Im(F ze5QYz?~L-MBlPt7byNTR^QUY#_}<1p*!~r=-$nmb3eWb>5c925{Fo1`HD2An1LZ}0 z_=g_9**_BPC-skgoV>i$Km5bXOZ~$?yu8#u{KLyj{lh=Jyvzga!{Ftm{^1{E;~V`$ zPhKASNB+P+ygc;(xOjg<;nn;_c||)0g=hLf{zCs0Kj~lLnSQph)3q5(`OZ`GmULNt#ez=}`dBmglCU6~8>#yZM;_W4#f9mm@{hMXK zq5RO(2llz78oFxx!NW8C&Y0QkA5G^6oDUv)(s}#(N$pvAd8t3>$;;z>lplKX@;Dzn z^yKAnK6vQY%gcU*p1eHHM||jMY<#0X=*i3De8h*Iygbea4?TH#oDUv)^71%8_QUFQ z|6k`D{m6bpeCP>$dx0A4-`I=(I6rp%S-hn`i?{S=@s|E9-qN4N%YKBO^#1E?f1Hp0 zm-@5f<9zVYlQ%xj2M;}Yd7KX(dh+r(A3XHr<#B#Vf4uz~{k1i Date: Sat, 3 Oct 2015 11:40:52 -0400 Subject: [PATCH 071/130] Corrected tally slicing for Python API MultiGroupXS --- docs/source/pythonapi/examples/geometry.xml | 8 ---- .../pythonapi/examples/materials-xy.png | Bin 1271 -> 0 bytes docs/source/pythonapi/examples/materials.xml | 12 ------ docs/source/pythonapi/examples/plots.xml | 8 ---- docs/source/pythonapi/examples/settings.xml | 17 -------- docs/source/pythonapi/examples/tallies.xml | 39 ------------------ 6 files changed, 84 deletions(-) delete mode 100644 docs/source/pythonapi/examples/geometry.xml delete mode 100644 docs/source/pythonapi/examples/materials-xy.png delete mode 100644 docs/source/pythonapi/examples/materials.xml delete mode 100644 docs/source/pythonapi/examples/plots.xml delete mode 100644 docs/source/pythonapi/examples/settings.xml delete mode 100644 docs/source/pythonapi/examples/tallies.xml diff --git a/docs/source/pythonapi/examples/geometry.xml b/docs/source/pythonapi/examples/geometry.xml deleted file mode 100644 index bfd99e0b9..000000000 --- a/docs/source/pythonapi/examples/geometry.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/source/pythonapi/examples/materials-xy.png b/docs/source/pythonapi/examples/materials-xy.png deleted file mode 100644 index cfed789b25a6f93030995c5645caee5dfd7cb7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 zcmZ{jZ&Z?Z6vrPkJ7-pN={b=rqgImUOl%el1V#q}n*tF{O4IyPDmwKf9Z}Oq$uuj= zESH65)3TZ;8FOV(N%K!yS)^vzY?!iAK}7=g_T=jut|LAo=NqwkRjNcSz$gw?g&LSB%=tsu&h8 z1cEYg5R{w$3CuBzo5M`^5mOu9~ zF#3BY9XjUZ!LpmrQdzsx?D}zLLE9cDQXt6jbr7A#kJpS#Ny%FL7X{fxV|Tk36&E{) zdT-t!%CC?xxlx3PMnPpWlY7Q7Da!HoR`S;r&+XO(?&nFX9u}@T@~~oX@+_oNk*=kh=s!#L`ybsuCBRqUSDLXOxK(w%WNNM1uv}@4aZw66MG#PT#5 z5C+X!{G=y2px37651z;io>5Ms_s*kr+QKC3(hZl|>0>#A!& z*!pmV?K~Mte+ZM&B^tQFVbr7fmz<29#|=Zw_JPf%c?-*_a_ufazLnWe8j1A%6D5%V z3)w4qNhN}LR=-)R>@~a(c*HA`1FSOd2W#d)58Q8-cMrC{MfE%75uj2JJJ^ha2*w@$ z7Q`cMm+X06XyHucub@V+s+sfCVQDtZl&o(WOTI)fvyC=vHVPR}Q()vfP-(IiQ$ULW z`(hT`HO%>2Y(kb>QJ2HO>}JCp28$kmZ3D^{^uz?U_1|2?PXv6g1NHzM{sbL;gG7pe zy9R8V9f(oGW8z10BX-1cHp^_tHxf9Y?K%9%u - - 71c - - - - - - - - - diff --git a/docs/source/pythonapi/examples/plots.xml b/docs/source/pythonapi/examples/plots.xml deleted file mode 100644 index 512070a33..000000000 --- a/docs/source/pythonapi/examples/plots.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - 0 0 0 - 21.5 21.5 - 250 250 - - diff --git a/docs/source/pythonapi/examples/settings.xml b/docs/source/pythonapi/examples/settings.xml deleted file mode 100644 index b8d6b36e1..000000000 --- a/docs/source/pythonapi/examples/settings.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - 2500 - 50 - 10 - - - - -0.63 -0.63 -0.63 0.63 0.63 0.63 - - - - true - true - - diff --git a/docs/source/pythonapi/examples/tallies.xml b/docs/source/pythonapi/examples/tallies.xml deleted file mode 100644 index f72c8ea83..000000000 --- a/docs/source/pythonapi/examples/tallies.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - total - scatter-P1 nu-fission - analog - - - - - total - flux total - analog - - - - - total - flux nu-fission - tracklength - - - - - - total - nu-scatter - analog - - - - - total - nu-fission - analog - - From a0d1c3b7c5fa3d97c2010512a9bcdab5e99dea05 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 12:41:07 -0400 Subject: [PATCH 072/130] Adding multi-group cross section generation IPython Notebook --- .gitignore | 5 +- .../examples/multi-group-cross-sections.ipynb | 2864 +++++++++++++++++ .../pythonapi/examples/openmc-mgxs.ipynb | 1112 ------- .../tracks/128_angles_0.1_cm_spacing.data | Bin 71256 -> 0 bytes 4 files changed, 2868 insertions(+), 1113 deletions(-) create mode 100644 docs/source/pythonapi/examples/multi-group-cross-sections.ipynb delete mode 100644 docs/source/pythonapi/examples/openmc-mgxs.ipynb delete mode 100644 docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data diff --git a/.gitignore b/.gitignore index 5634632fa..c5c4c729d 100644 --- a/.gitignore +++ b/.gitignore @@ -62,4 +62,7 @@ data/nndc .idea/* # IPython notebook checkpoints -.ipynb_checkpoints \ No newline at end of file +.ipynb_checkpoints + +# OpenMOC tracks +*.data \ No newline at end of file diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb new file mode 100644 index 000000000..14392ec97 --- /dev/null +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -0,0 +1,2864 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook demonstrates how to use the **``openmc.mgxs``** module to generate multi-group cross sections with OpenMC.\n", + "\n", + "**Note:** that 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, 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." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import openmc\n", + "import openmc.mgxs as mgxs\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Infinite Homogeneous Medium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first construct a simple homogeneous infinite medium problem to illustrate use of the `openmc.mgxs` module to generate multi-group cross sections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate Inputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we need to define materials that will be used in the problem. Before defining a material, we must create nuclides that are used in the material." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "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')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the nuclides we defined, we will now create a material for the homogeneous medium." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a Material and register the Nuclides\n", + "inf_medium = openmc.Material(name='moderator')\n", + "inf_medium.set_density('g/cc', 5.)\n", + "inf_medium.add_nuclide(h1, 0.028999667)\n", + "inf_medium.add_nuclide(o16, 0.01450188)\n", + "inf_medium.add_nuclide(u235, 0.000114142)\n", + "inf_medium.add_nuclide(u238, 0.006886019)\n", + "inf_medium.add_nuclide(zr90, 0.002116053)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With our material, we can now create a materials file object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a MaterialsFile, register all Materials, and export to XML\n", + "materials_file = openmc.MaterialsFile()\n", + "materials_file.default_xs = '71c'\n", + "materials_file.add_material(inf_medium)\n", + "materials_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's move on to the geometry. This problem will be a simple square cell with reflective boundary conditions to simulate an infinite homogeneous medium. The first step is to create the outer bounding surfaces of the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate boundary Planes\n", + "min_x = openmc.XPlane(boundary_type='reflective', x0=-0.63)\n", + "max_x = openmc.XPlane(boundary_type='reflective', x0=0.63)\n", + "min_y = openmc.YPlane(boundary_type='reflective', y0=-0.63)\n", + "max_y = openmc.YPlane(boundary_type='reflective', y0=0.63)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create a cell that is defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a Cell\n", + "cell = openmc.Cell(cell_id=1, name='cell')\n", + "\n", + "# Register bounding Surfaces with the Cell\n", + "cell.add_surface(surface=min_x, halfspace=+1)\n", + "cell.add_surface(surface=max_x, halfspace=-1)\n", + "cell.add_surface(surface=min_y, halfspace=+1)\n", + "cell.add_surface(surface=max_y, halfspace=-1)\n", + "\n", + "# Fill the Cell with the Material\n", + "cell.fill = inf_medium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "OpenMC requires that there is a \"root\" universe. Let us create a root universe and add our square cell to it." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate Universe\n", + "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", + "root_universe.add_cell(cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "openmc_geometry = openmc.Geometry()\n", + "openmc_geometry.root_universe = root_universe\n", + "\n", + "# Instantiate a GeometryFile\n", + "geometry_file = openmc.GeometryFile()\n", + "geometry_file.geometry = openmc_geometry\n", + "\n", + "# Export to \"geometry.xml\"\n", + "geometry_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we must define simulation parameters. In this case, we will use 10 inactive batches and 40 active batches each with 2500 particles." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# OpenMC simulation parameters\n", + "batches = 50\n", + "inactive = 10\n", + "particles = 2500\n", + "\n", + "# Instantiate a SettingsFile\n", + "settings_file = openmc.SettingsFile()\n", + "settings_file.batches = batches\n", + "settings_file.inactive = inactive\n", + "settings_file.particles = particles\n", + "settings_file.output = {'tallies': True, 'summary': True}\n", + "bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n", + "settings_file.set_source_space('box', bounds)\n", + "\n", + "# Export to \"settings.xml\"\n", + "settings_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are finally ready to make use of the `openmc.mgxs` module to generate multi-group cross sections! First, let's define a \"fine\" 8-group and \"coarse\" 2-group structures using the built-in `EnergyGroups` class." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a \"fine\" 8-group EneryGroups object\n", + "fine_groups = mgxs.EnergyGroups()\n", + "fine_groups.group_edges = np.array([0., 0.058e-6, 0.14e-6, 0.28e-6,\n", + " 0.625e-6, 4.e-6, 5.53e-3, 821.e-3, 20.])\n", + "\n", + "# Instantiate a \"coarse\" 2-group EneryGroups object\n", + "coarse_groups = mgxs.EnergyGroups()\n", + "coarse_groups.group_edges = np.array([0., 0.625e-6, 20.])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MultiGroupXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of generic and abstract `MultiGroupXS` class:\n", + "\n", + "* `TotalXS`\n", + "* `TransportXS`\n", + "* `AbsorptionXS`\n", + "* `CaptureXS`\n", + "* `FissionXS`\n", + "* `NuFissionXS`\n", + "* `ScatterXS`\n", + "* `NuScatterXS`\n", + "* `ScatterMatrixXS`\n", + "* `NuScatterMatrixXS`\n", + "* `Chi`\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 cross sections needed to run an OpenMOC simulation to verify the accuracy of our cross sections. In particular, we will define total, nu-fission, nu-scatter and chi cross sections for our infinite medium cell as the domain and our fine 8-group structure as our energy groups." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate cross sections needed for an OpenMOC simulation\n", + "transport = mgxs.TransportXS(domain=cell, domain_type='cell', groups=fine_groups)\n", + "nufission = mgxs.NuFissionXS(domain=cell, domain_type='cell', groups=fine_groups)\n", + "nuscatter = mgxs.NuScatterMatrixXS(domain=cell, domain_type='cell', groups=fine_groups)\n", + "chi = mgxs.Chi(domain=cell, domain_type='cell', groups=fine_groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we must instruct our multi-group cross section objects to generate the tallies needed to calculate each of them in OpenMC. This can be done with the `MultiGroupXS.create_tallies()` routine." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instruct each multi-group cross section to generate tallies\n", + "transport.create_tallies()\n", + "nufission.create_tallies()\n", + "nuscatter.create_tallies()\n", + "chi.create_tallies()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each multi-group cross section object stores its tallies in a Python dictionary called `tallies`. We can inspect the tallies in the dictionary for our `NuFission` object as follows. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'flux': Tally\n", + " \tID =\t10003\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", + " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", + " 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['flux']\n", + " \tEstimator =\ttracklength, 'nu-fission': Tally\n", + " \tID =\t10004\n", + " \tName =\t\n", + " \tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", + " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", + " 2.00000000e+01]\n", + " \tNuclides =\ttotal \n", + " \tScores =\t['nu-fission']\n", + " \tEstimator =\ttracklength}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nufission.tallies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `NuFission` object includes tracklength tallies for the 'nu-fission' and 'flux' scores in the 8-group structure in cell 1. Now that each multi-group cross section object contains the tallies that it needs, we must add these tallies to a `TalliesFile` object to generate the \"tallies.xml\" input file for OpenMC." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate an empty TalliesFile\n", + "tallies_file = openmc.TalliesFile()\n", + "\n", + "# Add transport tallies to the tallies file\n", + "for tally in transport.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Add nu-fission tallies to the tallies file\n", + "for tally in nufission.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Add nu-scatter tallies to the tallies file\n", + "for tally in nuscatter.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Add chi tallies to the tallies file \n", + "for tally in chi.tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + " \n", + "# Export to \"tallies.xml\"\n", + "tallies_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we a have a complete set of inputs, so we can go ahead and run our simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " .d88888b. 888b d888 .d8888b.\n", + " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", + " 888 888 88888b.d88888 888 888\n", + " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", + " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", + " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", + " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", + " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", + "__________________888______________________________________________________\n", + " 888\n", + " 888\n", + "\n", + " Copyright: 2011-2015 Massachusetts Institute of Technology\n", + " License: http://mit-crpg.github.io/openmc/license.html\n", + " Version: 0.7.0\n", + " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", + " Date/Time: 2015-10-03 12:30:47\n", + " MPI Processes: 1\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading geometry XML file...\n", + " Reading materials XML file...\n", + " Reading tallies XML file...\n", + " Building neighboring cells lists for each surface...\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: 92235.71c\n", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 1.14249 \n", + " 2/1 1.18016 \n", + " 3/1 1.16083 \n", + " 4/1 1.09124 \n", + " 5/1 1.15214 \n", + " 6/1 1.13453 \n", + " 7/1 1.15552 \n", + " 8/1 1.18149 \n", + " 9/1 1.10404 \n", + " 10/1 1.15703 \n", + " 11/1 1.21224 \n", + " 12/1 1.14147 1.17686 +/- 0.03538\n", + " 13/1 1.12601 1.15991 +/- 0.02655\n", + " 14/1 1.11972 1.14986 +/- 0.02129\n", + " 15/1 1.15683 1.15125 +/- 0.01655\n", + " 16/1 1.15236 1.15144 +/- 0.01351\n", + " 17/1 1.17833 1.15528 +/- 0.01205\n", + " 18/1 1.13229 1.15241 +/- 0.01082\n", + " 19/1 1.22394 1.16035 +/- 0.01242\n", + " 20/1 1.15867 1.16019 +/- 0.01111\n", + " 21/1 1.13611 1.15800 +/- 0.01029\n", + " 22/1 1.14101 1.15658 +/- 0.00950\n", + " 23/1 1.20864 1.16059 +/- 0.00961\n", + " 24/1 1.13475 1.15874 +/- 0.00909\n", + " 25/1 1.10697 1.15529 +/- 0.00914\n", + " 26/1 1.20824 1.15860 +/- 0.00916\n", + " 27/1 1.16775 1.15914 +/- 0.00863\n", + " 28/1 1.15904 1.15913 +/- 0.00813\n", + " 29/1 1.16967 1.15969 +/- 0.00771\n", + " 30/1 1.12574 1.15799 +/- 0.00751\n", + " 31/1 1.16177 1.15817 +/- 0.00715\n", + " 32/1 1.18082 1.15920 +/- 0.00689\n", + " 33/1 1.19549 1.16078 +/- 0.00677\n", + " 34/1 1.18508 1.16179 +/- 0.00656\n", + " 35/1 1.17697 1.16240 +/- 0.00632\n", + " 36/1 1.16342 1.16244 +/- 0.00607\n", + " 37/1 1.17400 1.16286 +/- 0.00586\n", + " 38/1 1.19281 1.16393 +/- 0.00575\n", + " 39/1 1.15669 1.16368 +/- 0.00555\n", + " 40/1 1.17987 1.16422 +/- 0.00539\n", + " 41/1 1.14129 1.16348 +/- 0.00527\n", + " 42/1 1.18323 1.16410 +/- 0.00514\n", + " 43/1 1.13885 1.16334 +/- 0.00504\n", + " 44/1 1.17943 1.16381 +/- 0.00491\n", + " 45/1 1.20014 1.16485 +/- 0.00488\n", + " 46/1 1.16056 1.16473 +/- 0.00474\n", + " 47/1 1.20077 1.16570 +/- 0.00471\n", + " 48/1 1.15469 1.16541 +/- 0.00460\n", + " 49/1 1.18862 1.16601 +/- 0.00452\n", + " 50/1 1.18755 1.16655 +/- 0.00444\n", + " Creating state point statepoint.50.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 3.8800E-01 seconds\n", + " Reading cross sections = 8.8000E-02 seconds\n", + " Total time in simulation = 1.4079E+01 seconds\n", + " Time in transport only = 1.4061E+01 seconds\n", + " Time in inactive batches = 2.0330E+00 seconds\n", + " Time in active batches = 1.2046E+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 = 0.0000E+00 seconds\n", + " Total time for finalization = 3.0000E-03 seconds\n", + " Total time elapsed = 1.4478E+01 seconds\n", + " Calculation Rate (inactive) = 12297.1 neutrons/second\n", + " Calculation Rate (active) = 8301.51 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.16600 +/- 0.00432\n", + " k-effective (Track-length) = 1.16655 +/- 0.00444\n", + " k-effective (Absorption) = 1.16281 +/- 0.00314\n", + " Combined k-effective = 1.16367 +/- 0.00307\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Run OpenMC!\n", + "executor = openmc.Executor()\n", + "executor.run_simulation()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created a statepoint file with all the tally data in it. We begin our analysis here loading the statepoint file and 'reading' the results. By default, data from the statepoint file is only read into memory when it is requested. This helps keep the memory use to a minimum even when a statepoint file may be huge." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the last statepoint file\n", + "sp = openmc.StatePoint('statepoint.50.h5')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the statepoint file, our simulation also created a summary file which encapsulates information about the materials and geometry which is necessary for the `openmc.mgxs` module to properly process the tally data. We first create a summary object and link it with the statepoint." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the summary file and link it with the statepoint\n", + "su = openmc.Summary('summary.h5')\n", + "sp.link_with_summary(su)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The statepoint is now ready to be analyzed by our multi-group cross sections. The first step is to load the tallies from the statepoint into each object." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the tallies from the statepoint into each MultiGroupXS object\n", + "transport.load_from_statepoint(sp)\n", + "nufission.load_from_statepoint(sp)\n", + "nuscatter.load_from_statepoint(sp)\n", + "chi.load_from_statepoint(sp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/pandas-dataframes.html) to compute cross sections from the tally data." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1485: RuntimeWarning: invalid value encountered in divide\n" + ] + } + ], + "source": [ + "transport.compute_xs()\n", + "nufission.compute_xs()\n", + "nuscatter.compute_xs()\n", + "chi.compute_xs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Voila! Our multi-group cross sections are now ready to rock 'n roll!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cross Section Data Visualization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's first inspect our fission production cross section by printing it to the screen." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t1\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.11e-02 +/- 5.93e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t6.60e-04 +/- 3.04e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t9.00e-03 +/- 4.10e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t1.44e-02 +/- 6.58e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t4.72e-02 +/- 9.80e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t7.29e-02 +/- 8.59e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t1.11e-01 +/- 7.92e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t2.39e-01 +/- 6.90e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "nufission.print_xs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since the `openmc.mgxs` module uses tally arithmetic under-the-hood, the cross section is stored as a \"derived\" tally. This means that it can be queried and manipulated using all of the same method supported for the `Tally` class in the OpenMC Python API. For example, we can construct a Pandas DataFrame of the multi-group cross section data." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellgroup ingroup outnuclidemeanstd. dev.
63111total0.0774600.000890
62112total0.0872760.000331
61113total0.0004500.000026
60114total0.0000000.000000
59115total0.0000000.000000
58116total0.0000000.000000
57117total0.0000000.000000
56118total0.0000000.000000
55121total0.0000000.000000
54122total0.2666510.001340
\n", + "
" + ], + "text/plain": [ + " cell group in group out nuclide mean std. dev.\n", + "63 1 1 1 total 0.077460 0.000890\n", + "62 1 1 2 total 0.087276 0.000331\n", + "61 1 1 3 total 0.000450 0.000026\n", + "60 1 1 4 total 0.000000 0.000000\n", + "59 1 1 5 total 0.000000 0.000000\n", + "58 1 1 6 total 0.000000 0.000000\n", + "57 1 1 7 total 0.000000 0.000000\n", + "56 1 1 8 total 0.000000 0.000000\n", + "55 1 2 1 total 0.000000 0.000000\n", + "54 1 2 2 total 0.266651 0.001340" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = nuscatter.get_pandas_dataframe()\n", + "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": 22, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "transport.export_xs_data(filename='transport-xs', format='excel')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code snippet shows how to export all of four cross sections to the same HDF5 binary data store." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "transport.build_hdf5_store(filename='mgxs', append=True)\n", + "nufission.build_hdf5_store(filename='mgxs', append=True)\n", + "nuscatter.build_hdf5_store(filename='mgxs', append=True)\n", + "chi.build_hdf5_store(filename='mgxs', append=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Verification with OpenMOC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course it is always a good idea to verify that one's cross sections are accurate. We can easily do so here with the deterministic transport code OpenMOC. First, we will use OpenCG to reconstruct our OpenMC geometry from the summary file into a equivalent OpenMOC geometry." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: 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" + ] + } + ], + "source": [ + "# Import OpenMOC and the OpenMOC/OpenCG compatibility module\n", + "import openmoc\n", + "from openmoc.compatible import get_openmoc_geometry\n", + "\n", + "# Create an OpenCG Geometry from the OpenMC Geometry stored in the summary\n", + "su.make_opencg_geometry()\n", + "\n", + "# Create an OpenMOC Geometry from the OpenCG Geometry\n", + "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, we can inject the multi-group cross sections into the equivalent infinite homogeneous medium OpenMOC geometry." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Get all OpenMOC cells in the gometry\n", + "openmoc_cells = openmoc_geometry.getRootUniverse().getAllCells()\n", + "\n", + "# Inject multi-group cross sections into OpenMOC Materials\n", + "for cell_id, cell in openmoc_cells.items():\n", + " \n", + " # Get a reference to the Material filling this Cell\n", + " openmoc_material = cell.getFillMaterial()\n", + " \n", + " # Set the number of energy groups for the Material\n", + " openmoc_material.setNumEnergyGroups(fine_groups.num_groups)\n", + " \n", + " # Inject NumPy arrays of cross section data into the Material\n", + " openmoc_material.setSigmaT(transport.get_xs().flatten())\n", + " openmoc_material.setNuSigmaF(nufission.get_xs().flatten())\n", + " openmoc_material.setSigmaS(nuscatter.get_xs().flatten())\n", + " openmoc_material.setChi(chi.get_xs().flatten())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to run OpenMOC to verify our cross-sections from OpenMC." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ NORMAL ] Ray tracing for track segmentation...\n", + "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Computing the eigenvalue...\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685180\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.785704\tres = 3.148E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.750352\tres = 1.467E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.729115\tres = 4.499E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.696059\tres = 2.830E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.663970\tres = 4.534E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.633141\tres = 4.610E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.605167\tres = 4.643E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.580592\tres = 4.418E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.559758\tres = 4.061E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.542846\tres = 3.588E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.529901\tres = 3.021E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.520893\tres = 2.385E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.515699\tres = 1.700E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.514152\tres = 9.971E-03\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.516033\tres = 2.999E-03\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.521086\tres = 3.657E-03\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.529034\tres = 9.792E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.539585\tres = 1.525E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.552436\tres = 1.994E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.567286\tres = 2.382E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.583843\tres = 2.688E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.601819\tres = 2.918E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.620946\tres = 3.079E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.640969\tres = 3.178E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.661654\tres = 3.225E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.682785\tres = 3.227E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.704168\tres = 3.194E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.725628\tres = 3.132E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.747011\tres = 3.048E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.768182\tres = 2.947E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.789024\tres = 2.834E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.809439\tres = 2.713E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.829342\tres = 2.587E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.848666\tres = 2.459E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.867356\tres = 2.330E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.885370\tres = 2.202E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.902676\tres = 2.077E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.919253\tres = 1.955E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.935087\tres = 1.836E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.950174\tres = 1.723E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.964514\tres = 1.613E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.978114\tres = 1.509E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.990987\tres = 1.410E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 1.003145\tres = 1.316E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 1.014610\tres = 1.227E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 1.025401\tres = 1.143E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 1.035542\tres = 1.064E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 1.045058\tres = 9.890E-03\n", + "[ NORMAL ] Iteration 49:\tk_eff = 1.053973\tres = 9.189E-03\n", + "[ NORMAL ] Iteration 50:\tk_eff = 1.062316\tres = 8.531E-03\n", + "[ NORMAL ] Iteration 51:\tk_eff = 1.070112\tres = 7.915E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 1.077389\tres = 7.339E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 1.084173\tres = 6.800E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.090490\tres = 6.297E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.096368\tres = 5.827E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.101830\tres = 5.390E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.106902\tres = 4.982E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.111608\tres = 4.603E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.115969\tres = 4.251E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.120009\tres = 3.924E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.123747\tres = 3.620E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.127204\tres = 3.338E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.130399\tres = 3.076E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.133349\tres = 2.834E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.136072\tres = 2.610E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.138584\tres = 2.403E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.140899\tres = 2.211E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.143032\tres = 2.033E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.144996\tres = 1.869E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.146803\tres = 1.718E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.148466\tres = 1.579E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.149995\tres = 1.450E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.151399\tres = 1.331E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.152690\tres = 1.222E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.153875\tres = 1.121E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.154963\tres = 1.028E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.155961\tres = 9.428E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.156876\tres = 8.642E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.157716\tres = 7.920E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.158485\tres = 7.256E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.159190\tres = 6.646E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.159836\tres = 6.085E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.160427\tres = 5.571E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.160969\tres = 5.098E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.161464\tres = 4.665E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.161917\tres = 4.268E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.162332\tres = 3.903E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.162711\tres = 3.570E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.163058\tres = 3.264E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.163375\tres = 2.982E-04\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.163664\tres = 2.725E-04\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.163929\tres = 2.490E-04\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.164171\tres = 2.275E-04\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.164392\tres = 2.077E-04\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.164593\tres = 1.897E-04\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.164777\tres = 1.733E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.164946\tres = 1.581E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.165099\tres = 1.444E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.165239\tres = 1.317E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.165367\tres = 1.202E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.165483\tres = 1.096E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.165590\tres = 1.000E-04\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.165687\tres = 9.126E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.165775\tres = 8.326E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.165856\tres = 7.590E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.165929\tres = 6.924E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.165996\tres = 6.304E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.166057\tres = 5.745E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.166113\tres = 5.243E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.166164\tres = 4.776E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.166210\tres = 4.355E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.166252\tres = 3.962E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.166291\tres = 3.624E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.166326\tres = 3.295E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.166358\tres = 3.003E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.166387\tres = 2.737E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.166413\tres = 2.486E-05\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.166437\tres = 2.267E-05\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.166459\tres = 2.061E-05\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.166479\tres = 1.883E-05\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.166497\tres = 1.711E-05\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.166514\tres = 1.563E-05\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.166529\tres = 1.418E-05\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.166543\tres = 1.300E-05\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.166555\tres = 1.176E-05\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.166567\tres = 1.074E-05\n" + ] + } + ], + "source": [ + "# Generate tracks for OpenMOC\n", + "openmoc_geometry.initializeFlatSourceRegions()\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, 128, 0.1)\n", + "track_generator.generateTracks()\n", + "\n", + "# Run OpenMOC\n", + "solver = openmoc.CPUSolver(track_generator)\n", + "solver.computeEigenvalue()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We report the eigenvalues computed by OpenMC and OpenMOC here together to summarize our results." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.163673\n", + "openmoc keff = 1.166567\n", + "bias [pcm]: 289.4\n" + ] + } + ], + "source": [ + "# Print report of keff and bias with OpenMC\n", + "openmoc_keff = solver.getKeff()\n", + "openmc_keff = sp.k_combined[0]\n", + "bias = (openmoc_keff - openmc_keff) * 1e5\n", + "\n", + "print('openmc keff = {0:1.6f}'.format(openmc_keff))\n", + "print('openmoc keff = {0:1.6f}'.format(openmoc_keff))\n", + "print('bias [pcm]: {0:1.1f}'.format(bias))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although there is a non-trivial bias, one can easily run the preceding code with more particle histories to show that both codes converge to the same eigenvalue with <10 pcm bias. It should be noted that this discrepancy is due to use of tracklength tallies for `NuFission`, while one must use more slowly converging analog tallies for `TransportXS`, `NuScatterMatrixXS` and `Chi` (which require an 'energyout' filter)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fuel Pin Cell" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we show how to compute multi-group cross sections for a fuel pin cell. In addition, we will illustrate how to use some of the more advanced features in `openmc.mgxs` such as nuclide-by-nuclide microscopic cross section tallies and downstream energy group condensation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate Inputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "this time we separate our nuclides into three distinct materials for water, clad and fuel." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# 1.6 enriched fuel\n", + "fuel = openmc.Material(name='1.6% Fuel')\n", + "fuel.set_density('g/cm3', 10.31341)\n", + "fuel.add_nuclide(u235, 3.7503e-4)\n", + "fuel.add_nuclide(u238, 2.2625e-2)\n", + "fuel.add_nuclide(o16, 4.6007e-2)\n", + "\n", + "# borated water\n", + "water = openmc.Material(name='Borated Water')\n", + "water.set_density('g/cm3', 0.740582)\n", + "water.add_nuclide(h1, 4.9457e-2)\n", + "water.add_nuclide(o16, 2.4732e-2)\n", + "\n", + "# zircaloy\n", + "zircaloy = openmc.Material(name='Zircaloy')\n", + "zircaloy.set_density('g/cm3', 6.55)\n", + "zircaloy.add_nuclide(zr90, 7.2758e-3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With our materials, we can now create a materials file object that can be exported to an actual XML file." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Instantiate a MaterialsFile, add Materials\n", + "materials_file = openmc.MaterialsFile()\n", + "materials_file.add_material(fuel)\n", + "materials_file.add_material(water)\n", + "materials_file.add_material(zircaloy)\n", + "materials_file.default_xs = '71c'\n", + "\n", + "# Export to \"materials.xml\"\n", + "materials_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's move on to the geometry. Our problem will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces -- in this case two cylinders and six reflective planes." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create cylinders for the fuel and clad\n", + "fuel_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218)\n", + "clad_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720)\n", + "\n", + "# Create boundary planes to surround the geometry\n", + "# Use both reflective and vacuum boundaries to make life interesting\n", + "min_x = openmc.XPlane(x0=-0.63, boundary_type='reflective')\n", + "max_x = openmc.XPlane(x0=+0.63, boundary_type='reflective')\n", + "min_y = openmc.YPlane(y0=-0.63, boundary_type='reflective')\n", + "max_y = openmc.YPlane(y0=+0.63, boundary_type='reflective')\n", + "min_z = openmc.ZPlane(z0=-0.63, boundary_type='reflective')\n", + "max_z = openmc.ZPlane(z0=+0.63, boundary_type='reflective')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With the surfaces defined, we can now create cells that are defined by intersections of half-spaces created by the surfaces." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create a Universe to encapsulate a fuel pin\n", + "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", + "\n", + "# Create fuel Cell\n", + "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", + "fuel_cell.fill = fuel\n", + "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", + "pin_cell_universe.add_cell(fuel_cell)\n", + "\n", + "# Create a clad Cell\n", + "clad_cell = openmc.Cell(name='1.6% Clad')\n", + "clad_cell.fill = zircaloy\n", + "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", + "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "pin_cell_universe.add_cell(clad_cell)\n", + "\n", + "# Create a moderator Cell\n", + "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", + "moderator_cell.fill = water\n", + "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", + "pin_cell_universe.add_cell(moderator_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "OpenMC requires that there is a \"root\" universe. Let us create a root cell that is filled by the pin cell universe and then assign it to the root universe." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create root Cell\n", + "root_cell = openmc.Cell(name='root cell')\n", + "root_cell.fill = pin_cell_universe\n", + "\n", + "# Add boundary planes\n", + "root_cell.add_surface(min_x, halfspace=+1)\n", + "root_cell.add_surface(max_x, halfspace=-1)\n", + "root_cell.add_surface(min_y, halfspace=+1)\n", + "root_cell.add_surface(max_y, halfspace=-1)\n", + "\n", + "# Create root Universe\n", + "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", + "root_universe.add_cell(root_cell)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create Geometry and set root Universe\n", + "openmc_geometry = openmc.Geometry()\n", + "openmc_geometry.root_universe = root_universe\n", + "\n", + "# Instantiate a GeometryFile\n", + "geometry_file = openmc.GeometryFile()\n", + "geometry_file.geometry = openmc_geometry\n", + "\n", + "# Export to \"geometry.xml\"\n", + "geometry_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will reuse our settings from the previous simulation. Now, we let's create transport, nu-fission, nu-scatter and chi multi-group cross sections for each cell." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Extract all Cells filled by Materials\n", + "openmc_cells = openmc_geometry.get_all_material_cells()\n", + "\n", + "# Create dictionary to store multi-group cross sections for all cells\n", + "xs_library = {}\n", + "\n", + "# Instantiate 8-group cross sections for each cell\n", + "for cell in openmc_cells:\n", + " xs_library[cell.id] = {}\n", + " xs_library[cell.id]['transport'] = mgxs.TransportXS(groups=fine_groups)\n", + " xs_library[cell.id]['nu-fission'] = mgxs.NuFissionXS(groups=fine_groups)\n", + " xs_library[cell.id]['nu-scatter'] = mgxs.NuScatterMatrixXS(groups=fine_groups)\n", + " xs_library[cell.id]['chi'] = mgxs.Chi(groups=fine_groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, we did not give our cross sections a spatial domain in their constructors. Instead, we will loop over all cells to set each cross sections domain. In addition, we will set each cross section to tally cross sections on a per-nuclide basis through the use of the `by_nuclide` instance attribute. " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Instantiate an empty TalliesFile\n", + "tallies_file = openmc.TalliesFile()\n", + "\n", + "# Iterate over all cells and cross section types\n", + "for cell in openmc_cells:\n", + " for rxn_type in xs_library[cell.id].keys():\n", + "\n", + " # Set the cross sections domain type to the cell\n", + " xs_library[cell.id][rxn_type].domain = cell\n", + " xs_library[cell.id][rxn_type].domain_type = 'cell'\n", + " \n", + " # Tally cross sections by nuclide (e.g., micro cross sections)\n", + " xs_library[cell.id][rxn_type].by_nuclide = True\n", + " \n", + " # Create OpenMC tallies for this cross section\n", + " xs_library[cell.id][rxn_type].create_tallies()\n", + " \n", + " # Add OpenMC tallies to the tallies file for XML generation\n", + " for tally in xs_library[cell.id][rxn_type].tallies.values():\n", + " tallies_file.add_tally(tally, merge=True)\n", + "\n", + "# Export to \"tallies.xml\"\n", + "tallies_file.export_to_xml()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we a have a complete set of inputs, so we can go ahead and run our simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " .d88888b. 888b d888 .d8888b.\n", + " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", + " 888 888 88888b.d88888 888 888\n", + " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", + " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", + " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", + " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", + " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", + "__________________888______________________________________________________\n", + " 888\n", + " 888\n", + "\n", + " Copyright: 2011-2015 Massachusetts Institute of Technology\n", + " License: http://mit-crpg.github.io/openmc/license.html\n", + " Version: 0.7.0\n", + " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", + " Date/Time: 2015-10-03 12:31:02\n", + " MPI Processes: 1\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading geometry XML file...\n", + " Reading materials XML file...\n", + " Reading tallies XML file...\n", + " Building neighboring cells lists for each surface...\n", + " Loading ACE cross section table: 92238.71c\n", + " Loading ACE cross section table: 8016.71c\n", + " Loading ACE cross section table: 92235.71c\n", + " Loading ACE cross section table: 1001.71c\n", + " Loading ACE cross section table: 40090.71c\n", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 1.23064 \n", + " 2/1 1.18217 \n", + " 3/1 1.20248 \n", + " 4/1 1.20841 \n", + " 5/1 1.25078 \n", + " 6/1 1.26156 \n", + " 7/1 1.18239 \n", + " 8/1 1.24391 \n", + " 9/1 1.22294 \n", + " 10/1 1.20654 \n", + " 11/1 1.24695 \n", + " 12/1 1.26717 1.25706 +/- 0.01011\n", + " 13/1 1.26830 1.26080 +/- 0.00693\n", + " 14/1 1.25206 1.25862 +/- 0.00537\n", + " 15/1 1.23449 1.25379 +/- 0.00637\n", + " 16/1 1.13532 1.23405 +/- 0.02042\n", + " 17/1 1.25230 1.23666 +/- 0.01745\n", + " 18/1 1.17655 1.22914 +/- 0.01688\n", + " 19/1 1.26829 1.23349 +/- 0.01551\n", + " 20/1 1.26274 1.23642 +/- 0.01418\n", + " 21/1 1.19211 1.23239 +/- 0.01344\n", + " 22/1 1.23183 1.23234 +/- 0.01227\n", + " 23/1 1.22292 1.23162 +/- 0.01131\n", + " 24/1 1.21154 1.23018 +/- 0.01057\n", + " 25/1 1.21882 1.22943 +/- 0.00987\n", + " 26/1 1.22321 1.22904 +/- 0.00924\n", + " 27/1 1.20043 1.22736 +/- 0.00884\n", + " 28/1 1.20998 1.22639 +/- 0.00839\n", + " 29/1 1.26327 1.22833 +/- 0.00817\n", + " 30/1 1.26615 1.23022 +/- 0.00798\n", + " 31/1 1.21810 1.22964 +/- 0.00761\n", + " 32/1 1.23946 1.23009 +/- 0.00727\n", + " 33/1 1.25718 1.23127 +/- 0.00705\n", + " 34/1 1.21614 1.23064 +/- 0.00678\n", + " 35/1 1.23962 1.23100 +/- 0.00651\n", + " 36/1 1.24640 1.23159 +/- 0.00628\n", + " 37/1 1.24546 1.23210 +/- 0.00607\n", + " 38/1 1.21329 1.23143 +/- 0.00588\n", + " 39/1 1.24137 1.23177 +/- 0.00569\n", + " 40/1 1.27335 1.23316 +/- 0.00567\n", + " 41/1 1.24768 1.23363 +/- 0.00550\n", + " 42/1 1.19014 1.23227 +/- 0.00550\n", + " 43/1 1.24273 1.23259 +/- 0.00534\n", + " 44/1 1.20201 1.23169 +/- 0.00526\n", + " 45/1 1.24084 1.23195 +/- 0.00511\n", + " 46/1 1.25992 1.23273 +/- 0.00503\n", + " 47/1 1.19931 1.23182 +/- 0.00497\n", + " 48/1 1.24106 1.23207 +/- 0.00484\n", + " 49/1 1.28278 1.23337 +/- 0.00489\n", + " 50/1 1.26711 1.23421 +/- 0.00484\n", + " Creating state point statepoint.50.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 4.1100E-01 seconds\n", + " Reading cross sections = 1.1100E-01 seconds\n", + " Total time in simulation = 3.4700E+01 seconds\n", + " Time in transport only = 3.4683E+01 seconds\n", + " Time in inactive batches = 3.7780E+00 seconds\n", + " Time in active batches = 3.0922E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 9.0000E-03 seconds\n", + " Total time elapsed = 3.5131E+01 seconds\n", + " Calculation Rate (inactive) = 6617.26 neutrons/second\n", + " Calculation Rate (active) = 3233.94 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.23174 +/- 0.00461\n", + " k-effective (Track-length) = 1.23421 +/- 0.00484\n", + " k-effective (Absorption) = 1.23034 +/- 0.00239\n", + " Combined k-effective = 1.23109 +/- 0.00215\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Delete old HDF5 files\n", + "!rm *.h5\n", + "\n", + "# Run OpenMC!\n", + "executor = openmc.Executor()\n", + "executor.run_simulation()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tally Data Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our simulation ran successfully and created a statepoint file with all the tally data in it. As before, we begin our analysis here loading the statepoint file." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load the last statepoint and summary files\n", + "sp = openmc.StatePoint('statepoint.50.h5')\n", + "su = openmc.Summary('summary.h5')\n", + "sp.link_with_summary(su)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The statepoint is now ready to be analyzed by our multi-group cross sections. Next, we load the tallies from the statepoint into each object and to compute the cross sections using tally arithmetic." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Iterate over all cells and cross section types\n", + "for cell in openmc_cells:\n", + " for rxn_type in xs_library[cell.id].keys():\n", + " xs_library[cell.id][rxn_type].load_from_statepoint(sp)\n", + " xs_library[cell.id][rxn_type].compute_xs()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's it! Our multi-group cross sections are now ready for the big spotlight. This time we have cross sections in three distinct spatial zones - fuel, clad and moderator - on a per-nuclide basis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cross Section Data Visualization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's first inspect one of our cross sections by printing it to the screen as a microscopic cross section in units of barns." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t3.31e+00 +/- 6.20e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t3.96e+00 +/- 3.40e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.51e+01 +/- 5.07e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.79e+01 +/- 7.27e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.90e+02 +/- 1.13e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.11e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.88e+02 +/- 9.03e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 6.88e-01%\n", + "\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.07e+00 +/- 6.51e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 6.61e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t6.15e-04 +/- 9.95e+00%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 6.29e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.08e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.11e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 9.03e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 6.86e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "nufission = xs_library[fuel_cell.id]['nu-fission']\n", + "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our multi-group cross sections are capable of summing across all nuclides to provide us with macroscopic cross sections as well." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t2.54e-02 +/- 6.20e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.51e-03 +/- 3.34e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t2.07e-02 +/- 5.07e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.30e-02 +/- 7.26e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.13e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.11e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 9.03e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 6.88e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "nufission = xs_library[fuel_cell.id]['nu-fission']\n", + "nufission.print_xs(xs_type='macro', nuclides='sum')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although a printed report is nice, it is not scalable or flexible. Let's extract the cross section data for the moderator as a Pandas DataFrame." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211O-161.5704670.018506
1271000211H-10.2356740.009063
1241000212O-160.2883330.003932
1251000212H-11.5812950.008248
1221000213O-160.0000000.000000
1231000213H-10.0108280.000616
1201000214O-160.0000000.000000
1211000214H-10.0000000.000000
1181000215O-160.0000000.000000
1191000215H-10.0000000.000000
\n", + "
" + ], + "text/plain": [ + " cell group in group out nuclide mean std. dev.\n", + "126 10002 1 1 O-16 1.570467 0.018506\n", + "127 10002 1 1 H-1 0.235674 0.009063\n", + "124 10002 1 2 O-16 0.288333 0.003932\n", + "125 10002 1 2 H-1 1.581295 0.008248\n", + "122 10002 1 3 O-16 0.000000 0.000000\n", + "123 10002 1 3 H-1 0.010828 0.000616\n", + "120 10002 1 4 O-16 0.000000 0.000000\n", + "121 10002 1 4 H-1 0.000000 0.000000\n", + "118 10002 1 5 O-16 0.000000 0.000000\n", + "119 10002 1 5 H-1 0.000000 0.000000" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", + "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", + "df.head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can easily use the Pandas DataFrame to extract the H-1 and O-16 scattering matrices separately." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# 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", + "\n", + "# Cast DataFrames as NumPy arrays\n", + "h1 = h1.as_matrix()\n", + "o16 = o16.as_matrix()\n", + "\n", + "# Reshape arrays to 2D matrix for plotting\n", + "h1.shape = (fine_groups.num_groups, fine_groups.num_groups)\n", + "o16.shape = (fine_groups.num_groups, fine_groups.num_groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Matplotlib's `imshow` routine can be used to plot the matrices to illustrate their sparsity structures." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create plot of the H-1 scattering matrix\n", + "fig = plt.subplot(121)\n", + "fig.imshow(h1, interpolation='nearest')\n", + "plt.title('H-1 Scattering Matrix')\n", + "\n", + "# Create plot of the O-16 scattering matrix\n", + "fig2 = plt.subplot(122)\n", + "fig2.imshow(o16, interpolation='nearest')\n", + "plt.title('O-16 Scattering Matrix')\n", + "\n", + "# Show the plot on screen\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we illustate how one can easily take multi-group cross sections and condense them down to a coarser energy group structure using. The `get_condensed_xs(...)` class method takes in as a parameter an `EnergyGroups` object with a coarse(r) group structure and returns a new multi-group cross section condensed to the coarse groups. We illustrate this process below using the 2-group structure created earlier." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Extract the 16-group transport cross section for the fuel\n", + "fine_xs = xs_library[fuel_cell.id]['transport']\n", + "\n", + "# Condense to the 2-group structure\n", + "condense_xs = fine_xs.get_condensed_xs(coarse_groups)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Group condensation is as simple as that! We now have a new coarse 2-group cross section in addition to our original 16-group cross section. Let's inspect the 2-group cross section by printing it to the screen and extracting a Pandas DataFrame as we have already learned how to do." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\ttransport\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t2.16e-01 +/- 3.77e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t2.54e-01 +/- 6.46e-01%\n", + "\n", + "\tNuclide =\tO-16\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.03e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 7.83e-01%\n", + "\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.72e-03 +/- 1.13e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 5.18e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "condense_xs.print_xs()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellgroup innuclidemeanstd. dev.
3100001U-2389.5669470.036112
4100001O-163.1467800.012666
5100001U-23520.5912530.232675
0100002U-23811.2049120.072348
1100002O-163.7984070.029742
2100002U-235484.5296842.510940
\n", + "
" + ], + "text/plain": [ + " cell group in nuclide mean std. dev.\n", + "3 10000 1 U-238 9.566947 0.036112\n", + "4 10000 1 O-16 3.146780 0.012666\n", + "5 10000 1 U-235 20.591253 0.232675\n", + "0 10000 2 U-238 11.204912 0.072348\n", + "1 10000 2 O-16 3.798407 0.029742\n", + "2 10000 2 U-235 484.529684 2.510940" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = condense_xs.get_pandas_dataframe(xs_type='micro')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Verification with OpenMOC" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, let's verify our cross sections using OpenMOC. First, we use OpenCG construct an equivalent OpenMOC geometry just as we did before." + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Create an OpenCG Geometry from the OpenMC Geometry stored in the summary\n", + "su.make_opencg_geometry()\n", + "\n", + "# Create an OpenMOC Geometry from the OpenCG Geometry\n", + "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Likewise, we can inject the multi-group cross sections into the equivalent fuel pin cell OpenMOC geometry." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Get all OpenMOC cells in the gometry\n", + "openmoc_cells = openmoc_geometry.getRootUniverse().getAllCells()\n", + "\n", + "# Inject multi-group cross sections into OpenMOC Materials\n", + "# NOTE: This code will work for 1, 10, or 1,000s of cells\n", + "# as is the case for a complicated geometry like BEAVRS\n", + "for cell_id, cell in openmoc_cells.items():\n", + " \n", + " # Ignore the root cell\n", + " if cell.getName() == 'root cell':\n", + " continue\n", + " \n", + " # Get a reference to the Material filling this Cell\n", + " openmoc_material = cell.getFillMaterial()\n", + " \n", + " # Set the number of energy groups for the Material\n", + " openmoc_material.setNumEnergyGroups(fine_groups.num_groups)\n", + " \n", + " # Extract the appropriate cross section objects for this cell\n", + " transport = xs_library[cell_id]['transport']\n", + " nufission = xs_library[cell_id]['nu-fission']\n", + " nuscatter = xs_library[cell_id]['nu-scatter']\n", + " chi = xs_library[cell_id]['chi']\n", + " \n", + " # Inject NumPy arrays of cross section data into the Material\n", + " # NOTE: In each case we must sum across nuclides to get the\n", + " # macroscopic cross sections needed by OpenMOC\n", + " openmoc_material.setSigmaT(transport.get_xs(nuclides='sum').flatten())\n", + " openmoc_material.setNuSigmaF(nufission.get_xs(nuclides='sum').flatten())\n", + " openmoc_material.setSigmaS(nuscatter.get_xs(nuclides='sum').flatten())\n", + " openmoc_material.setChi(chi.get_xs(nuclides='sum').flatten())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to run OpenMOC to verify our cross-sections from OpenMC." + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ NORMAL ] Ray tracing for track segmentation...\n", + "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Computing the eigenvalue...\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.574798\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.680220\tres = 4.252E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.661620\tres = 1.834E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.660063\tres = 2.734E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.644413\tres = 2.354E-03\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.627431\tres = 2.371E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.608477\tres = 2.635E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.589425\tres = 3.021E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.571080\tres = 3.131E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.553841\tres = 3.112E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.538232\tres = 3.019E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.524518\tres = 2.818E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.512887\tres = 2.548E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.503407\tres = 2.218E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.496149\tres = 1.848E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.491110\tres = 1.442E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.488262\tres = 1.016E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.487559\tres = 5.798E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.488929\tres = 1.441E-03\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.492277\tres = 2.810E-03\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.497495\tres = 6.848E-03\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.504468\tres = 1.060E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.513071\tres = 1.402E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.523171\tres = 1.705E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.534637\tres = 1.969E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.547332\tres = 2.192E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.561124\tres = 2.375E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.575881\tres = 2.520E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.591472\tres = 2.630E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.607776\tres = 2.707E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.624672\tres = 2.756E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.642047\tres = 2.780E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.659796\tres = 2.781E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.677818\tres = 2.764E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.696019\tres = 2.731E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.714314\tres = 2.685E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.732625\tres = 2.629E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.750879\tres = 2.563E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.769011\tres = 2.492E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.786963\tres = 2.415E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.804681\tres = 2.334E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.822119\tres = 2.251E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.839238\tres = 2.167E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.856002\tres = 2.082E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.872382\tres = 1.997E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.888351\tres = 1.913E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.903889\tres = 1.831E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.918979\tres = 1.749E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.933609\tres = 1.669E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.947768\tres = 1.592E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.961451\tres = 1.517E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.974653\tres = 1.444E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.987374\tres = 1.373E-02\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.999614\tres = 1.305E-02\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.011376\tres = 1.240E-02\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.022667\tres = 1.177E-02\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.033492\tres = 1.116E-02\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.043858\tres = 1.058E-02\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.053776\tres = 1.003E-02\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.063254\tres = 9.501E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.072304\tres = 8.994E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.080937\tres = 8.512E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.089165\tres = 8.051E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.097001\tres = 7.612E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.104457\tres = 7.194E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.111546\tres = 6.797E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.118282\tres = 6.419E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.124677\tres = 6.060E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.130743\tres = 5.719E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.136495\tres = 5.394E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.141946\tres = 5.087E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.147109\tres = 4.796E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.151994\tres = 4.520E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.156615\tres = 4.259E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.160984\tres = 4.011E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.165111\tres = 3.777E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.169010\tres = 3.555E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.172690\tres = 3.346E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.176162\tres = 3.148E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.179436\tres = 2.960E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.182522\tres = 2.784E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.185431\tres = 2.617E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.188170\tres = 2.460E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.190750\tres = 2.311E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.193177\tres = 2.171E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.195460\tres = 2.039E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.197609\tres = 1.914E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.199628\tres = 1.797E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.201525\tres = 1.685E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.203309\tres = 1.582E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.204983\tres = 1.484E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.206555\tres = 1.391E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.208032\tres = 1.305E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.209416\tres = 1.224E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.210716\tres = 1.146E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.211934\tres = 1.075E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.213078\tres = 1.006E-03\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.214149\tres = 9.432E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.215152\tres = 8.828E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.216093\tres = 8.267E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.216974\tres = 7.742E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.217799\tres = 7.244E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.218572\tres = 6.782E-04\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.219295\tres = 6.344E-04\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.219972\tres = 5.932E-04\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.220605\tres = 5.554E-04\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.221198\tres = 5.190E-04\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.221753\tres = 4.854E-04\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.222271\tres = 4.540E-04\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.222756\tres = 4.243E-04\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.223210\tres = 3.967E-04\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.223633\tres = 3.709E-04\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.224029\tres = 3.461E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.224399\tres = 3.238E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.224746\tres = 3.022E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.225068\tres = 2.827E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.225369\tres = 2.633E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.225651\tres = 2.460E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.225914\tres = 2.299E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.226160\tres = 2.147E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.226390\tres = 2.007E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.226604\tres = 1.871E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.226803\tres = 1.741E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.226990\tres = 1.628E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.227164\tres = 1.522E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.227326\tres = 1.414E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.227478\tres = 1.322E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.227619\tres = 1.233E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.227751\tres = 1.150E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.227874\tres = 1.077E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.227988\tres = 1.001E-04\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.228095\tres = 9.273E-05\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.228195\tres = 8.720E-05\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.228288\tres = 8.102E-05\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.228374\tres = 7.574E-05\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.228455\tres = 7.035E-05\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.228530\tres = 6.542E-05\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.228601\tres = 6.126E-05\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.228666\tres = 5.717E-05\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.228727\tres = 5.295E-05\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.228783\tres = 4.953E-05\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.228835\tres = 4.580E-05\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.228885\tres = 4.264E-05\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.228931\tres = 3.986E-05\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.228973\tres = 3.729E-05\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.229013\tres = 3.467E-05\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.229051\tres = 3.219E-05\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.229085\tres = 3.040E-05\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.229118\tres = 2.835E-05\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.229147\tres = 2.611E-05\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.229174\tres = 2.401E-05\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.229201\tres = 2.208E-05\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.229225\tres = 2.135E-05\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.229247\tres = 1.992E-05\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.229268\tres = 1.797E-05\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.229288\tres = 1.687E-05\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.229306\tres = 1.559E-05\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.229322\tres = 1.474E-05\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.229338\tres = 1.351E-05\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.229352\tres = 1.242E-05\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.229366\tres = 1.182E-05\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.229378\tres = 1.086E-05\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.229390\tres = 1.005E-05\n" + ] + } + ], + "source": [ + "# Generate tracks for OpenMOC\n", + "openmoc_geometry.initializeFlatSourceRegions()\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, 128, 0.1)\n", + "track_generator.generateTracks()\n", + "\n", + "# Run OpenMOC\n", + "solver = openmoc.CPUSolver(track_generator)\n", + "solver.computeEigenvalue()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We report the eigenvalues computed by OpenMC and OpenMOC here together to summarize our results." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.231090\n", + "openmoc keff = 1.229390\n", + "bias [pcm]: -170.1\n" + ] + } + ], + "source": [ + "# Print report of keff and bias with OpenMC\n", + "openmoc_keff = solver.getKeff()\n", + "openmc_keff = sp.k_combined[0]\n", + "bias = (openmoc_keff - openmc_keff) * 1e5\n", + "\n", + "print('openmc keff = {0:1.6f}'.format(openmc_keff))\n", + "print('openmoc keff = {0:1.6f}'.format(openmoc_keff))\n", + "print('bias [pcm]: {0:1.1f}'.format(bias))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a sanity check, let's run a simulation with the coarse 2-group cross sections to ensure that they produce a reasonable result." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "su.make_opencg_geometry()\n", + "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)\n", + "openmoc_cells = openmoc_geometry.getRootUniverse().getAllCells()\n", + "\n", + "# Inject multi-group cross sections into OpenMOC Materials\n", + "for cell_id, cell in openmoc_cells.items():\n", + " \n", + " # Ignore the root cell\n", + " if cell.getName() == 'root cell':\n", + " continue\n", + " \n", + " openmoc_material = cell.getFillMaterial()\n", + " openmoc_material.setNumEnergyGroups(coarse_groups.num_groups)\n", + " \n", + " # Extract the appropriate cross section objects for this cell\n", + " transport = xs_library[cell_id]['transport']\n", + " nufission = xs_library[cell_id]['nu-fission']\n", + " nuscatter = xs_library[cell_id]['nu-scatter']\n", + " chi = xs_library[cell_id]['chi']\n", + " \n", + " # Perform group condensation\n", + " transport = transport.get_condensed_xs(coarse_groups)\n", + " nufission = nufission.get_condensed_xs(coarse_groups)\n", + " nuscatter = nuscatter.get_condensed_xs(coarse_groups)\n", + " chi = chi.get_condensed_xs(coarse_groups)\n", + " \n", + " # Inject NumPy arrays of cross section data into the Material\n", + " openmoc_material.setSigmaT(transport.get_xs(nuclides='sum').flatten())\n", + " openmoc_material.setNuSigmaF(nufission.get_xs(nuclides='sum').flatten())\n", + " openmoc_material.setSigmaS(nuscatter.get_xs(nuclides='sum').flatten())\n", + " openmoc_material.setChi(chi.get_xs(nuclides='sum').flatten())" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ NORMAL ] Importing ray tracing data from file...\n", + "[ NORMAL ] Computing the eigenvalue...\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.496342\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.558070\tres = 5.037E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.519062\tres = 1.244E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.510118\tres = 6.990E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.497533\tres = 1.723E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.489754\tres = 2.467E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.484192\tres = 1.564E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.481187\tres = 1.136E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.480359\tres = 6.206E-03\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.481504\tres = 1.721E-03\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.484422\tres = 2.384E-03\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.488925\tres = 6.059E-03\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.494842\tres = 9.295E-03\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.502013\tres = 1.210E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.510294\tres = 1.449E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.519552\tres = 1.650E-02\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.529662\tres = 1.814E-02\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.540514\tres = 1.946E-02\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.552005\tres = 2.049E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.564041\tres = 2.126E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.576537\tres = 2.180E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.589414\tres = 2.215E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.602601\tres = 2.233E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.616034\tres = 2.237E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.629654\tres = 2.229E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.643407\tres = 2.211E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.657246\tres = 2.184E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.671127\tres = 2.151E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.685011\tres = 2.112E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.698862\tres = 2.069E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.712650\tres = 2.022E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.726345\tres = 1.973E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.739923\tres = 1.922E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.753361\tres = 1.869E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.766641\tres = 1.816E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.779744\tres = 1.763E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.792655\tres = 1.709E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.805362\tres = 1.656E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.817853\tres = 1.603E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.830119\tres = 1.551E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.842152\tres = 1.500E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.853945\tres = 1.450E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.865493\tres = 1.400E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.876791\tres = 1.352E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.887837\tres = 1.305E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 0.898630\tres = 1.260E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 0.909165\tres = 1.216E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 0.919445\tres = 1.172E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 0.929468\tres = 1.131E-02\n", + "[ NORMAL ] Iteration 49:\tk_eff = 0.939236\tres = 1.090E-02\n", + "[ NORMAL ] Iteration 50:\tk_eff = 0.948749\tres = 1.051E-02\n", + "[ NORMAL ] Iteration 51:\tk_eff = 0.958010\tres = 1.013E-02\n", + "[ NORMAL ] Iteration 52:\tk_eff = 0.967022\tres = 9.762E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 0.975787\tres = 9.406E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 0.984307\tres = 9.064E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 0.992586\tres = 8.731E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.000628\tres = 8.411E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.008438\tres = 8.102E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.016018\tres = 7.805E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.023372\tres = 7.517E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.030506\tres = 7.237E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.037423\tres = 6.971E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.044129\tres = 6.712E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.050628\tres = 6.464E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.056924\tres = 6.224E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.063023\tres = 5.993E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.068929\tres = 5.771E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.074647\tres = 5.555E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.080180\tres = 5.349E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.085536\tres = 5.149E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.090717\tres = 4.958E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.095728\tres = 4.773E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.100575\tres = 4.595E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.105261\tres = 4.424E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.109791\tres = 4.257E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.114171\tres = 4.099E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.118403\tres = 3.946E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.122493\tres = 3.799E-03\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.126443\tres = 3.656E-03\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.130259\tres = 3.519E-03\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.133946\tres = 3.388E-03\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.137505\tres = 3.262E-03\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.140942\tres = 3.139E-03\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.144260\tres = 3.021E-03\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.147464\tres = 2.908E-03\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.150556\tres = 2.799E-03\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.153540\tres = 2.695E-03\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.156419\tres = 2.593E-03\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.159198\tres = 2.496E-03\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.161878\tres = 2.403E-03\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.164464\tres = 2.312E-03\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.166959\tres = 2.225E-03\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.169365\tres = 2.143E-03\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.171685\tres = 2.061E-03\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.173922\tres = 1.984E-03\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.176080\tres = 1.910E-03\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.178160\tres = 1.838E-03\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.180166\tres = 1.769E-03\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.182100\tres = 1.702E-03\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.183965\tres = 1.639E-03\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.185761\tres = 1.577E-03\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.187493\tres = 1.517E-03\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.189162\tres = 1.461E-03\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.190771\tres = 1.405E-03\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.192321\tres = 1.353E-03\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.193815\tres = 1.302E-03\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.195253\tres = 1.253E-03\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.196640\tres = 1.205E-03\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.197976\tres = 1.160E-03\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.199263\tres = 1.116E-03\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.200504\tres = 1.074E-03\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.201698\tres = 1.034E-03\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.202848\tres = 9.950E-04\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.203957\tres = 9.570E-04\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.205024\tres = 9.215E-04\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.206052\tres = 8.863E-04\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.207043\tres = 8.531E-04\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.207995\tres = 8.214E-04\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.208913\tres = 7.891E-04\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.209798\tres = 7.597E-04\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.210649\tres = 7.320E-04\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.211469\tres = 7.034E-04\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.212259\tres = 6.771E-04\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.213019\tres = 6.521E-04\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.213749\tres = 6.268E-04\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.214455\tres = 6.023E-04\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.215133\tres = 5.809E-04\n", + "[ NORMAL ] Iteration 127:\tk_eff = 1.215786\tres = 5.588E-04\n", + "[ NORMAL ] Iteration 128:\tk_eff = 1.216414\tres = 5.368E-04\n", + "[ NORMAL ] Iteration 129:\tk_eff = 1.217020\tres = 5.168E-04\n", + "[ NORMAL ] Iteration 130:\tk_eff = 1.217601\tres = 4.980E-04\n", + "[ NORMAL ] Iteration 131:\tk_eff = 1.218162\tres = 4.780E-04\n", + "[ NORMAL ] Iteration 132:\tk_eff = 1.218703\tres = 4.601E-04\n", + "[ NORMAL ] Iteration 133:\tk_eff = 1.219222\tres = 4.443E-04\n", + "[ NORMAL ] Iteration 134:\tk_eff = 1.219722\tres = 4.260E-04\n", + "[ NORMAL ] Iteration 135:\tk_eff = 1.220203\tres = 4.096E-04\n", + "[ NORMAL ] Iteration 136:\tk_eff = 1.220667\tres = 3.946E-04\n", + "[ NORMAL ] Iteration 137:\tk_eff = 1.221113\tres = 3.800E-04\n", + "[ NORMAL ] Iteration 138:\tk_eff = 1.221542\tres = 3.655E-04\n", + "[ NORMAL ] Iteration 139:\tk_eff = 1.221954\tres = 3.510E-04\n", + "[ NORMAL ] Iteration 140:\tk_eff = 1.222352\tres = 3.378E-04\n", + "[ NORMAL ] Iteration 141:\tk_eff = 1.222734\tres = 3.251E-04\n", + "[ NORMAL ] Iteration 142:\tk_eff = 1.223102\tres = 3.131E-04\n", + "[ NORMAL ] Iteration 143:\tk_eff = 1.223457\tres = 3.009E-04\n", + "[ NORMAL ] Iteration 144:\tk_eff = 1.223798\tres = 2.896E-04\n", + "[ NORMAL ] Iteration 145:\tk_eff = 1.224127\tres = 2.791E-04\n", + "[ NORMAL ] Iteration 146:\tk_eff = 1.224442\tres = 2.684E-04\n", + "[ NORMAL ] Iteration 147:\tk_eff = 1.224746\tres = 2.578E-04\n", + "[ NORMAL ] Iteration 148:\tk_eff = 1.225039\tres = 2.481E-04\n", + "[ NORMAL ] Iteration 149:\tk_eff = 1.225320\tres = 2.392E-04\n", + "[ NORMAL ] Iteration 150:\tk_eff = 1.225591\tres = 2.296E-04\n", + "[ NORMAL ] Iteration 151:\tk_eff = 1.225852\tres = 2.208E-04\n", + "[ NORMAL ] Iteration 152:\tk_eff = 1.226103\tres = 2.125E-04\n", + "[ NORMAL ] Iteration 153:\tk_eff = 1.226344\tres = 2.047E-04\n", + "[ NORMAL ] Iteration 154:\tk_eff = 1.226575\tres = 1.965E-04\n", + "[ NORMAL ] Iteration 155:\tk_eff = 1.226799\tres = 1.888E-04\n", + "[ NORMAL ] Iteration 156:\tk_eff = 1.227014\tres = 1.822E-04\n", + "[ NORMAL ] Iteration 157:\tk_eff = 1.227221\tres = 1.750E-04\n", + "[ NORMAL ] Iteration 158:\tk_eff = 1.227419\tres = 1.687E-04\n", + "[ NORMAL ] Iteration 159:\tk_eff = 1.227611\tres = 1.619E-04\n", + "[ NORMAL ] Iteration 160:\tk_eff = 1.227794\tres = 1.560E-04\n", + "[ NORMAL ] Iteration 161:\tk_eff = 1.227972\tres = 1.495E-04\n", + "[ NORMAL ] Iteration 162:\tk_eff = 1.228142\tres = 1.442E-04\n", + "[ NORMAL ] Iteration 163:\tk_eff = 1.228307\tres = 1.391E-04\n", + "[ NORMAL ] Iteration 164:\tk_eff = 1.228464\tres = 1.338E-04\n", + "[ NORMAL ] Iteration 165:\tk_eff = 1.228616\tres = 1.283E-04\n", + "[ NORMAL ] Iteration 166:\tk_eff = 1.228762\tres = 1.235E-04\n", + "[ NORMAL ] Iteration 167:\tk_eff = 1.228902\tres = 1.183E-04\n", + "[ NORMAL ] Iteration 168:\tk_eff = 1.229037\tres = 1.145E-04\n", + "[ NORMAL ] Iteration 169:\tk_eff = 1.229167\tres = 1.099E-04\n", + "[ NORMAL ] Iteration 170:\tk_eff = 1.229293\tres = 1.056E-04\n", + "[ NORMAL ] Iteration 171:\tk_eff = 1.229413\tres = 1.022E-04\n", + "[ NORMAL ] Iteration 172:\tk_eff = 1.229529\tres = 9.787E-05\n", + "[ NORMAL ] Iteration 173:\tk_eff = 1.229641\tres = 9.401E-05\n", + "[ NORMAL ] Iteration 174:\tk_eff = 1.229748\tres = 9.086E-05\n", + "[ NORMAL ] Iteration 175:\tk_eff = 1.229851\tres = 8.685E-05\n", + "[ NORMAL ] Iteration 176:\tk_eff = 1.229950\tres = 8.395E-05\n", + "[ NORMAL ] Iteration 177:\tk_eff = 1.230046\tres = 8.088E-05\n", + "[ NORMAL ] Iteration 178:\tk_eff = 1.230138\tres = 7.760E-05\n", + "[ NORMAL ] Iteration 179:\tk_eff = 1.230226\tres = 7.451E-05\n", + "[ NORMAL ] Iteration 180:\tk_eff = 1.230310\tres = 7.146E-05\n", + "[ NORMAL ] Iteration 181:\tk_eff = 1.230392\tres = 6.878E-05\n", + "[ NORMAL ] Iteration 182:\tk_eff = 1.230470\tres = 6.632E-05\n", + "[ NORMAL ] Iteration 183:\tk_eff = 1.230546\tres = 6.372E-05\n", + "[ NORMAL ] Iteration 184:\tk_eff = 1.230619\tres = 6.170E-05\n", + "[ NORMAL ] Iteration 185:\tk_eff = 1.230689\tres = 5.908E-05\n", + "[ NORMAL ] Iteration 186:\tk_eff = 1.230756\tres = 5.654E-05\n", + "[ NORMAL ] Iteration 187:\tk_eff = 1.230821\tres = 5.487E-05\n", + "[ NORMAL ] Iteration 188:\tk_eff = 1.230883\tres = 5.247E-05\n", + "[ NORMAL ] Iteration 189:\tk_eff = 1.230943\tres = 5.058E-05\n", + "[ NORMAL ] Iteration 190:\tk_eff = 1.231001\tres = 4.846E-05\n", + "[ NORMAL ] Iteration 191:\tk_eff = 1.231056\tres = 4.672E-05\n", + "[ NORMAL ] Iteration 192:\tk_eff = 1.231109\tres = 4.478E-05\n", + "[ NORMAL ] Iteration 193:\tk_eff = 1.231161\tres = 4.334E-05\n", + "[ NORMAL ] Iteration 194:\tk_eff = 1.231210\tres = 4.165E-05\n", + "[ NORMAL ] Iteration 195:\tk_eff = 1.231258\tres = 4.022E-05\n", + "[ NORMAL ] Iteration 196:\tk_eff = 1.231303\tres = 3.850E-05\n", + "[ NORMAL ] Iteration 197:\tk_eff = 1.231347\tres = 3.721E-05\n", + "[ NORMAL ] Iteration 198:\tk_eff = 1.231389\tres = 3.559E-05\n", + "[ NORMAL ] Iteration 199:\tk_eff = 1.231430\tres = 3.425E-05\n", + "[ NORMAL ] Iteration 200:\tk_eff = 1.231469\tres = 3.291E-05\n", + "[ NORMAL ] Iteration 201:\tk_eff = 1.231507\tres = 3.174E-05\n", + "[ NORMAL ] Iteration 202:\tk_eff = 1.231543\tres = 3.023E-05\n", + "[ NORMAL ] Iteration 203:\tk_eff = 1.231577\tres = 2.923E-05\n", + "[ NORMAL ] Iteration 204:\tk_eff = 1.231611\tres = 2.808E-05\n", + "[ NORMAL ] Iteration 205:\tk_eff = 1.231643\tres = 2.711E-05\n", + "[ NORMAL ] Iteration 206:\tk_eff = 1.231673\tres = 2.587E-05\n", + "[ NORMAL ] Iteration 207:\tk_eff = 1.231703\tres = 2.481E-05\n", + "[ NORMAL ] Iteration 208:\tk_eff = 1.231731\tres = 2.409E-05\n", + "[ NORMAL ] Iteration 209:\tk_eff = 1.231759\tres = 2.301E-05\n", + "[ NORMAL ] Iteration 210:\tk_eff = 1.231785\tres = 2.220E-05\n", + "[ NORMAL ] Iteration 211:\tk_eff = 1.231811\tres = 2.139E-05\n", + "[ NORMAL ] Iteration 212:\tk_eff = 1.231835\tres = 2.065E-05\n", + "[ NORMAL ] Iteration 213:\tk_eff = 1.231859\tres = 1.999E-05\n", + "[ NORMAL ] Iteration 214:\tk_eff = 1.231881\tres = 1.899E-05\n", + "[ NORMAL ] Iteration 215:\tk_eff = 1.231903\tres = 1.825E-05\n", + "[ NORMAL ] Iteration 216:\tk_eff = 1.231924\tres = 1.761E-05\n", + "[ NORMAL ] Iteration 217:\tk_eff = 1.231944\tres = 1.696E-05\n", + "[ NORMAL ] Iteration 218:\tk_eff = 1.231963\tres = 1.648E-05\n", + "[ NORMAL ] Iteration 219:\tk_eff = 1.231982\tres = 1.564E-05\n", + "[ NORMAL ] Iteration 220:\tk_eff = 1.232000\tres = 1.508E-05\n", + "[ NORMAL ] Iteration 221:\tk_eff = 1.232017\tres = 1.450E-05\n", + "[ NORMAL ] Iteration 222:\tk_eff = 1.232033\tres = 1.398E-05\n", + "[ NORMAL ] Iteration 223:\tk_eff = 1.232050\tres = 1.344E-05\n", + "[ NORMAL ] Iteration 224:\tk_eff = 1.232065\tres = 1.312E-05\n", + "[ NORMAL ] Iteration 225:\tk_eff = 1.232080\tres = 1.233E-05\n", + "[ NORMAL ] Iteration 226:\tk_eff = 1.232094\tres = 1.204E-05\n", + "[ NORMAL ] Iteration 227:\tk_eff = 1.232108\tres = 1.156E-05\n", + "[ NORMAL ] Iteration 228:\tk_eff = 1.232121\tres = 1.114E-05\n", + "[ NORMAL ] Iteration 229:\tk_eff = 1.232134\tres = 1.064E-05\n", + "[ NORMAL ] Iteration 230:\tk_eff = 1.232146\tres = 1.029E-05\n" + ] + } + ], + "source": [ + "# Generate tracks for OpenMOC\n", + "openmoc_geometry.initializeFlatSourceRegions()\n", + "track_generator = openmoc.TrackGenerator(openmoc_geometry, 128, 0.1)\n", + "track_generator.generateTracks()\n", + "\n", + "# Run OpenMOC\n", + "solver = openmoc.CPUSolver(track_generator)\n", + "solver.computeEigenvalue()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.231090\n", + "openmoc keff = 1.232146\n", + "bias [pcm]: 105.6\n" + ] + } + ], + "source": [ + "# Print report of keff and bias with OpenMC\n", + "openmoc_keff = solver.getKeff()\n", + "openmc_keff = sp.k_combined[0]\n", + "bias = (openmoc_keff - openmc_keff) * 1e5\n", + "\n", + "print('openmc keff = {0:1.6f}'.format(openmc_keff))\n", + "print('openmoc keff = {0:1.6f}'.format(openmoc_keff))\n", + "print('bias [pcm]: {0:1.1f}'.format(bias))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is a non-trivial bias in both the 2-group and 8-group cases. In the case of the pin cell, one can show that these biases do not converge to <100 pcm with more particle histories. In the case of heterogeneous geometries, additional measures must be taken to address the following three sources of bias:\n", + "\n", + "* Appropriate transport-corrected cross sections\n", + "* Spatial discretization of OpenMOC's mesh\n", + "* Constant-in-angle multi-group cross sections" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/source/pythonapi/examples/openmc-mgxs.ipynb b/docs/source/pythonapi/examples/openmc-mgxs.ipynb deleted file mode 100644 index 2aedc3121..000000000 --- a/docs/source/pythonapi/examples/openmc-mgxs.ipynb +++ /dev/null @@ -1,1112 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This notebook demonstrates how to use the **``openmc.mgxs``** module to generate multi-group cross sections with OpenMC.\n", - "\n", - "**Note:** that 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, 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." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "import openmc\n", - "import openmc.mgxs as mgxs\n", - "\n", - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Infinite Homogeneous Medium" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We first construct a simple homogeneous infinite medium problem to illustrate use of the `openmc.mgxs` module to generate multi-group cross sections." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Generate Inputs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First we need to define materials that will be used in the problem. Before defining a material, we must create nuclides that are used in the material." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "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')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the nuclides we defined, we will now create a material for the homogeneous medium." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate a Material and register the Nuclides\n", - "inf_medium = openmc.Material(name='moderator')\n", - "inf_medium.set_density('g/cc', 5.)\n", - "inf_medium.add_nuclide(h1, 0.028999667)\n", - "inf_medium.add_nuclide(o16, 0.01450188)\n", - "inf_medium.add_nuclide(u235, 0.000114142)\n", - "inf_medium.add_nuclide(u238, 0.006886019)\n", - "inf_medium.add_nuclide(zr90, 0.002116053)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With our material, we can now create a materials file object that can be exported to an actual XML file." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate a MaterialsFile, register all Materials, and export to XML\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.default_xs = '71c'\n", - "materials_file.add_material(inf_medium)\n", - "materials_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's move on to the geometry. This problem will be a simple square cell with reflective boundary conditions to simulate an infinite homogeneous medium. The first step is to create the outer bounding surfaces of the problem." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate boundary Planes\n", - "min_x = openmc.XPlane(boundary_type='reflective', x0=-0.63)\n", - "max_x = openmc.XPlane(boundary_type='reflective', x0=0.63)\n", - "min_y = openmc.YPlane(boundary_type='reflective', y0=-0.63)\n", - "max_y = openmc.YPlane(boundary_type='reflective', y0=0.63)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the surfaces defined, we can now create a cell that is defined by intersections of half-spaces created by the surfaces." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate a Cell\n", - "cell = openmc.Cell(cell_id=1, name='cell')\n", - "\n", - "# Register bounding Surfaces with the Cell\n", - "cell.add_surface(surface=min_x, halfspace=+1)\n", - "cell.add_surface(surface=max_x, halfspace=-1)\n", - "cell.add_surface(surface=min_y, halfspace=+1)\n", - "cell.add_surface(surface=max_y, halfspace=-1)\n", - "\n", - "# Fill the Cell with the Material\n", - "cell.fill = inf_medium" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "OpenMC requires that there is a \"root\" universe. Let us create a root universe and add our square cell to it." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate Universe\n", - "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", - "root_universe.add_cell(cell)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create Geometry and set root Universe\n", - "openmc_geometry = openmc.Geometry()\n", - "openmc_geometry.root_universe = root_universe\n", - "\n", - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = openmc_geometry\n", - "\n", - "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we must define simulation parameters. In this case, we will use 10 inactive batches and 40 active batches each with 2500 particles." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# OpenMC simulation parameters\n", - "batches = 50\n", - "inactive = 10\n", - "particles = 2500\n", - "\n", - "# Instantiate a SettingsFile\n", - "settings_file = openmc.SettingsFile()\n", - "settings_file.batches = batches\n", - "settings_file.inactive = inactive\n", - "settings_file.particles = particles\n", - "settings_file.output = {'tallies': True, 'summary': True}\n", - "bounds = [-0.63, -0.63, -0.63, 0.63, 0.63, 0.63]\n", - "settings_file.set_source_space('box', bounds)\n", - "\n", - "# Export to \"settings.xml\"\n", - "settings_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we are finally ready to make use of the `openmc.mgxs` module to generate multi-group cross sections! First, let's define a \"fine\" 8-group and \"coarse\" 2-group structures using the built-in `EnergyGroups` class." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate a \"fine\" 8-group EneryGroups object\n", - "fine_groups = mgxs.EnergyGroups()\n", - "fine_groups.group_edges = np.array([0., 0.058e-6, 0.14e-6, 0.28e-6,\n", - " 0.625e-6, 4.e-6, 5.53e-3, 821.e-3, 20.])\n", - "\n", - "# Instantiate a \"coarse\" 2-group EneryGroups object\n", - "coarse_groups = mgxs.EnergyGroups()\n", - "coarse_groups.group_edges = np.array([0., 0.625e-6, 20.])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MultiGroupXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of generic and abstract `MultiGroupXS` class:\n", - "\n", - "* `TotalXS`\n", - "* `TransportXS`\n", - "* `AbsorptionXS`\n", - "* `CaptureXS`\n", - "* `FissionXS`\n", - "* `NuFissionXS`\n", - "* `ScatterXS`\n", - "* `NuScatterXS`\n", - "* `ScatterMatrixXS`\n", - "* `NuScatterMatrixXS`\n", - "* `Chi`\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 cross sections needed to run an OpenMOC simulation to verify the accuracy of our cross sections. In particular, we will define total, nu-fission, nu-scatter and chi cross sections for our infinite medium cell as the domain and our fine 8-group structure as our energy groups." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate cross sections needed for an OpenMOC simulation\n", - "transport = mgxs.TransportXS(domain=cell, domain_type='cell', groups=fine_groups)\n", - "nufission = mgxs.NuFissionXS(domain=cell, domain_type='cell', groups=fine_groups)\n", - "nuscatter = mgxs.NuScatterMatrixXS(domain=cell, domain_type='cell', groups=fine_groups)\n", - "chi = mgxs.Chi(domain=cell, domain_type='cell', groups=fine_groups)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we must instruct our multi-group cross section objects to generate the tallies needed to calculate each of them in OpenMC. This can be done with the `MultiGroupXS.create_tallies()` routine." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instruct each multi-group cross section to generate tallies\n", - "transport.create_tallies()\n", - "nufission.create_tallies()\n", - "nuscatter.create_tallies()\n", - "chi.create_tallies()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each multi-group cross section object stores its tallies in a Python dictionary called `tallies`. We can inspect the tallies in the dictionary for our `NuFission` object as follows. " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'flux': Tally\n", - " \tID =\t10003\n", - " \tName =\t\n", - " \tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", - " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", - " 2.00000000e+01]\n", - " \tNuclides =\ttotal \n", - " \tScores =\t['flux']\n", - " \tEstimator =\ttracklength, 'nu-fission': Tally\n", - " \tID =\t10004\n", - " \tName =\t\n", - " \tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", - " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", - " 2.00000000e+01]\n", - " \tNuclides =\ttotal \n", - " \tScores =\t['nu-fission']\n", - " \tEstimator =\ttracklength}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "nufission.tallies" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `NuFission` object includes tracklength tallies for the 'nu-fission' and 'flux' scores in the 8-group structure in cell 1. Now that each multi-group cross section object contains the tallies that it needs, we must add these tallies to a `TalliesFile` object to generate the \"tallies.xml\" input file for OpenMC." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", - "\n", - "# Add transport tallies to the tallies file\n", - "for tally in transport.tallies.values():\n", - " tallies_file.add_tally(tally, merge=True)\n", - "\n", - "# Add nu-fission tallies to the tallies file\n", - "for tally in nufission.tallies.values():\n", - " tallies_file.add_tally(tally, merge=True)\n", - "\n", - "# Add nu-scatter tallies to the tallies file\n", - "for tally in nuscatter.tallies.values():\n", - " tallies_file.add_tally(tally, merge=True)\n", - "\n", - "# Add chi tallies to the tallies file \n", - "for tally in chi.tallies.values():\n", - " tallies_file.add_tally(tally, merge=True)\n", - " \n", - "# Export to \"tallies.xml\"\n", - "tallies_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we a have a complete set of inputs, so we can go ahead and run our simulation." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Run OpenMC!\n", - "executor = openmc.Executor()\n", - "executor.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Tally Data Processing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Our simulation ran successfully and created a statepoint file with all the tally data in it. We begin our analysis here loading the statepoint file and 'reading' the results. By default, data from the statepoint file is only read into memory when it is requested. This helps keep the memory use to a minimum even when a statepoint file may be huge." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Load the last statepoint file\n", - "sp = openmc.StatePoint('statepoint.50.h5')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In addition to the statepoint file, our simulation also created a summary file which encapsulates information about the materials and geometry which is necessary for the `openmc.mgxs` module to properly process the tally data. We first create a summary object and link it with the statepoint." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Load the summary file and link it with the statepoint\n", - "su = openmc.Summary('summary.h5')\n", - "sp.link_with_summary(su)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The statepoint is now ready to be analyzed by our multi-group cross sections. The first step is to load the tallies from the statepoint into each object." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'tuple' object has no attribute '__name__'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the tallies from the statepoint into each MultiGroupXS object\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mtransport\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mnufission\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mnuscatter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mchi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mload_from_statepoint\u001b[1;34m(self, statepoint)\u001b[0m\n\u001b[0;32m 1216\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1217\u001b[0m \u001b[1;31m# Load the tallies from the statepoint using the parent class method\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1218\u001b[1;33m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mTransportXS\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload_from_statepoint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstatepoint\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1219\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1220\u001b[0m \u001b[1;31m# Use tally slicing to remove scatter-P0 data from scatter-P1 tally\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mload_from_statepoint\u001b[1;34m(self, statepoint)\u001b[0m\n\u001b[0;32m 429\u001b[0m \u001b[1;31m# the isotopic number densities as computed by OpenMC\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 430\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'cell'\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'distribcell'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 431\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstatepoint\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_cell_by_id\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 432\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'universe'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 433\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstatepoint\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_universe_by_id\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdomain\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.pyc\u001b[0m in \u001b[0;36mdomain\u001b[1;34m(self, domain)\u001b[0m\n\u001b[0;32m 198\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mdomain\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetter\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 199\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 200\u001b[1;33m \u001b[0mcv\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcheck_type\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'domain'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDOMAINS\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 201\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_domain\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdomain\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 202\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/checkvalue.pyc\u001b[0m in \u001b[0;36mcheck_type\u001b[1;34m(name, value, expected_type, expected_iter_type)\u001b[0m\n\u001b[0;32m 52\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0m_isinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexpected_type\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 53\u001b[0m msg = 'Unable to set \"{0}\" to \"{1}\" which is not of type \"{2}\"'.format(\n\u001b[1;32m---> 54\u001b[1;33m name, value, expected_type.__name__)\n\u001b[0m\u001b[0;32m 55\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'tuple' object has no attribute '__name__'" - ] - } - ], - "source": [ - "# Load the tallies from the statepoint into each MultiGroupXS object\n", - "transport.load_from_statepoint(sp)\n", - "nufission.load_from_statepoint(sp)\n", - "nuscatter.load_from_statepoint(sp)\n", - "chi.load_from_statepoint(sp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/pandas-dataframes.html) to compute cross sections from the tally data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "transport.compute_xs()\n", - "nufission.compute_xs()\n", - "nuscatter.compute_xs()\n", - "chi.compute_xs()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Voila! Our multi-group cross sections are now ready to rock 'n roll! Let's first inspect one of our cross sections by printing it to the screen." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "nufission.print_xs()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since the `openmc.mgxs` module uses tally arithmetic under-the-hood, the cross section is stored as a \"derived\" tally. This means that it can be queried and manipulated using all of the same method supported for the `Tally` class in the OpenMC Python API. For example, we can construct a Pandas DataFrame of the multi-group cross section data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "df = nuscatter.get_pandas_dataframe()\n", - "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": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "transport.export_xs_data(filename='transport-xs', format='excel')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following code snippet shows how to export all of four cross sections to the same HDF5 binary data store." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "transport.build_hdf5_store(filename='mgxs', append=True)\n", - "nufission.build_hdf5_store(filename='mgxs', append=True)\n", - "nuscatter.build_hdf5_store(filename='mgxs', append=True)\n", - "chi.build_hdf5_store(filename='mgxs', append=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Of course it is always a good idea to verify that one's cross sections are accurate. We can easily do so here with the deterministic transport code OpenMOC. First, we will use OpenCG to reconstruct our OpenMC geometry from the summary file into a equivalent OpenMOC geometry." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Import OpenMOC and the OpenMOC/OpenCG compatibility module\n", - "import openmoc\n", - "from openmoc.compatible import get_openmoc_geometry\n", - "\n", - "# Create an OpenCG Geometry from the OpenMC Geometry stored in the summary\n", - "su.make_opencg_geometry()\n", - "\n", - "# Create an OpenMOC Geometry from the OpenCG Geometry\n", - "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we can inject the multi-group cross sections into the equivalent infinite homogeneous medium OpenMOC geometry." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Get all OpenMOC cells in the gometry\n", - "openmoc_cells = openmoc_geometry.getRootUniverse().getAllCells()\n", - "\n", - "# Inject multi-group cross sections into OpenMOC Materials\n", - "# NOTE: This code will work for 1, 10, or 1,000s of cells\n", - "# as is the case for a complicated geometry like BEAVRS\n", - "for cell_id, cell in openmoc_cells.items():\n", - " \n", - " # Get a reference to the Material filling this Cell\n", - " openmoc_material = cell.getFillMaterial()\n", - " \n", - " # Set the number of energy groups for the Material\n", - " openmoc_material.setNumEnergyGroups(fine_groups.num_groups)\n", - " \n", - " # Inject NumPy arrays of cross section data into the Material\n", - " openmoc_material.setSigmaT(transport.get_xs().flatten())\n", - " openmoc_material.setNuSigmaF(nufission.get_xs().flatten())\n", - " openmoc_material.setSigmaS(nuscatter.get_xs().flatten())\n", - " openmoc_material.setChi(chi.get_xs().flatten())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are now ready to run OpenMOC to verify our cross-sections from OpenMC." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Generate tracks for OpenMOC\n", - "openmoc_geometry.initializeFlatSourceRegions()\n", - "track_generator = openmoc.TrackGenerator(openmoc_geometry, 128, 0.1)\n", - "track_generator.generateTracks()\n", - "\n", - "# Run OpenMOC\n", - "solver = openmoc.CPUSolver(track_generator)\n", - "solver.computeEigenvalue()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We report the eigenvalues computed by OpenMC and OpenMOC here together to summarize our results." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Print report of keff and bias with OpenMC\n", - "openmoc_keff = solver.getKeff()\n", - "openmc_keff = sp.k_combined[0]\n", - "bias = (openmoc_keff - openmc_keff) * 1e5\n", - "\n", - "print('openmc keff = {0:1.6f}'.format(openmc_keff))\n", - "print('openmoc keff = {0:1.6f}'.format(openmoc_keff))\n", - "print('bias [pcm]: {0:1.1f}'.format(bias))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although there is a non-trivial bias, one can easily run the preceding code with more particle histories to show that both codes converge to the same eigenvalue with <10 pcm bias. It should be noted that this discrepancy is partially due to use of tracklength tallies for `NuFission`, while one must use more slowly converging analog tallies must be used for `TransportXS`, `NuScatterMatrixXS` and `Chi` (which require an 'energyout' filter)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Fuel Pin Cell" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this section we show how to compute multi-group cross sections for a fuel pin cell. In addition, we will illustrate how to use some of the more advanced features in `openmc.mgxs` such as nuclide-by-nuclide microscopic cross section tallies and downstream energy group condensation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Generate Inputs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "this time we separate our nuclides into three distinct materials for water, clad and fuel." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# 1.6 enriched fuel\n", - "fuel = openmc.Material(name='1.6% Fuel')\n", - "fuel.set_density('g/cm3', 10.31341)\n", - "fuel.add_nuclide(u235, 3.7503e-4)\n", - "fuel.add_nuclide(u238, 2.2625e-2)\n", - "fuel.add_nuclide(o16, 4.6007e-2)\n", - "\n", - "# borated water\n", - "water = openmc.Material(name='Borated Water')\n", - "water.set_density('g/cm3', 0.740582)\n", - "water.add_nuclide(h1, 4.9457e-2)\n", - "water.add_nuclide(o16, 2.4732e-2)\n", - "\n", - "# zircaloy\n", - "zircaloy = openmc.Material(name='Zircaloy')\n", - "zircaloy.set_density('g/cm3', 6.55)\n", - "zircaloy.add_nuclide(zr90, 7.2758e-3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With our materials, we can now create a materials file object that can be exported to an actual XML file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Instantiate a MaterialsFile, add Materials\n", - "materials_file = openmc.MaterialsFile()\n", - "materials_file.add_material(fuel)\n", - "materials_file.add_material(water)\n", - "materials_file.add_material(zircaloy)\n", - "materials_file.default_xs = '71c'\n", - "\n", - "# Export to \"materials.xml\"\n", - "materials_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's move on to the geometry. Our problem will have three regions for the fuel, the clad, and the surrounding coolant. The first step is to create the bounding surfaces -- in this case two cylinders and six reflective planes." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Create cylinders for the fuel and clad\n", - "fuel_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.39218)\n", - "clad_outer_radius = openmc.ZCylinder(x0=0.0, y0=0.0, R=0.45720)\n", - "\n", - "# Create boundary planes to surround the geometry\n", - "# Use both reflective and vacuum boundaries to make life interesting\n", - "min_x = openmc.XPlane(x0=-0.63, boundary_type='reflective')\n", - "max_x = openmc.XPlane(x0=+0.63, boundary_type='reflective')\n", - "min_y = openmc.YPlane(y0=-0.63, boundary_type='reflective')\n", - "max_y = openmc.YPlane(y0=+0.63, boundary_type='reflective')\n", - "min_z = openmc.ZPlane(z0=-0.63, boundary_type='reflective')\n", - "max_z = openmc.ZPlane(z0=+0.63, boundary_type='reflective')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With the surfaces defined, we can now create cells that are defined by intersections of half-spaces created by the surfaces." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Create a Universe to encapsulate a fuel pin\n", - "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", - "\n", - "# Create fuel Cell\n", - "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", - "fuel_cell.fill = fuel\n", - "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", - "pin_cell_universe.add_cell(fuel_cell)\n", - "\n", - "# Create a clad Cell\n", - "clad_cell = openmc.Cell(name='1.6% Clad')\n", - "clad_cell.fill = zircaloy\n", - "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", - "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", - "pin_cell_universe.add_cell(clad_cell)\n", - "\n", - "# Create a moderator Cell\n", - "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", - "moderator_cell.fill = water\n", - "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", - "pin_cell_universe.add_cell(moderator_cell)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "OpenMC requires that there is a \"root\" universe. Let us create a root cell that is filled by the pin cell universe and then assign it to the root universe." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Create root Cell\n", - "root_cell = openmc.Cell(name='root cell')\n", - "root_cell.fill = pin_cell_universe\n", - "\n", - "# Add boundary planes\n", - "root_cell.add_surface(min_x, halfspace=+1)\n", - "root_cell.add_surface(max_x, halfspace=-1)\n", - "root_cell.add_surface(min_y, halfspace=+1)\n", - "root_cell.add_surface(max_y, halfspace=-1)\n", - "\n", - "# Create root Universe\n", - "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", - "root_universe.add_cell(root_cell)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now must create a geometry that is assigned a root universe, put the geometry into a geometry file, and export it to XML." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "# Create Geometry and set root Universe\n", - "openmc_geometry = openmc.Geometry()\n", - "openmc_geometry.root_universe = root_universe\n", - "\n", - "# Instantiate a GeometryFile\n", - "geometry_file = openmc.GeometryFile()\n", - "geometry_file.geometry = openmc_geometry\n", - "\n", - "# Export to \"geometry.xml\"\n", - "geometry_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will reuse our settings from the previous simulation. Now, we let's create transport, nu-fission, nu-scatter and chi multi-group cross sections for each cell." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Extract all Cells filled by Materials\n", - "openmc_cells = openmc_geometry.get_all_material_cells()\n", - "\n", - "# Create dictionary to store multi-group cross sections for all cells\n", - "xs_library = {}\n", - "\n", - "# Instantiate 8-group cross sections for each cell\n", - "for cell in openmc_cells:\n", - " xs_library[cell.id] = {}\n", - " xs_library[cell.id]['transport'] = mgxs.TransportXS(groups=fine_groups)\n", - " xs_library[cell.id]['nu-fission'] = mgxs.NuFissionXS(groups=fine_groups)\n", - " xs_library[cell.id]['nu-scatter'] = mgxs.NuScatterMatrixXS(groups=fine_groups)\n", - " xs_library[cell.id]['chi'] = mgxs.Chi(groups=fine_groups)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case, we did not give our cross sections a spatial domain in their constructors. Instead, we will loop over all cells to set each cross sections domain. In addition, we will set each cross section to tally cross sections on a per-nuclide basis through the use of the `by_nuclide` instance attribute. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Instantiate an empty TalliesFile\n", - "tallies_file = openmc.TalliesFile()\n", - "\n", - "# Iterate over all cells and cross section types\n", - "for cell in openmc_cells:\n", - " for rxn_type in xs_library[cell.id].keys():\n", - " print(cell.name, rxn_type)\n", - "\n", - " # Set the cross sections domain type to the cell\n", - " xs_library[cell.id][rxn_type].domain = cell\n", - " xs_library[cell.id][rxn_type].domain_type = 'cell'\n", - " \n", - " # Tally cross sections by nuclide (e.g., micro cross sections)\n", - " xs_library[cell.id][rxn_type].by_nuclide = True\n", - " \n", - " # Create OpenMC tallies for this cross section\n", - " xs_library[cell.id][rxn_type].create_tallies()\n", - " \n", - " # Add OpenMC tallies to the tallies file for XML generation\n", - " for tally in xs_library[cell.id][rxn_type].tallies.values():\n", - " print(tally)\n", - " tallies_file.add_tally(tally, merge=True)\n", - "\n", - "# Export to \"tallies.xml\"\n", - "tallies_file.export_to_xml()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we a have a complete set of inputs, so we can go ahead and run our simulation." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Delete old HDF5 files\n", - "!rm *.h5\n", - "\n", - "# Run OpenMC!\n", - "executor = openmc.Executor()\n", - "executor.run_simulation()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Tally Data Processing" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Our simulation ran successfully and created a statepoint file with all the tally data in it. As before, we begin our analysis here loading the statepoint file." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Load the last statepoint and summary files\n", - "sp = openmc.StatePoint('statepoint.50.h5')\n", - "su = openmc.Summary('summary.h5')\n", - "sp.link_with_summary(su)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Iterate over all cells and cross section types\n", - "for cell in openmc_cells:\n", - " for rxn_type in xs_library[cell.id].keys():\n", - " xs_library[cell.id][rxn_type].load_from_statepoint(sp)\n", - " xs_library[cell.id][rxn_type].compute_xs()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data b/docs/source/pythonapi/examples/tracks/128_angles_0.1_cm_spacing.data deleted file mode 100644 index b108b863c52d6d385677f2f730b589892ee66001..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71256 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%0AB9)@AO7*7 znjeOawEDCBL;u4+q8=8f{ZEznEdRlyy@VdL_)LG`(OyCi8qf3(oul1xgdPSy_~bb| ze0kf!_cZ>&)_(?srnSQ{dzGyf6UE!I2OZvyY5_77bZ~FGV+YZiZ z^v~9h7WGZ~$2#g7pRXS;`;E#?`>?OB6rQc0E$W-%V;yycSJ&@GeGwn)s4F~MKOXHY z*U`s5EM8u&qaUv$3kSTsTt^@4sC#+2jy~2=_wsTbeJW4z^0B_nI#5_g-OJOu^#T2d zb>+v#H|ywQ9d$2{b@YXvwEC<0hjsL6+=o2Yc$WXjKhziFM*LkXf382AhjsMH|Im(F ze5QYz?~L-MBlPt7byNTR^QUY#_}<1p*!~r=-$nmb3eWb>5c925{Fo1`HD2An1LZ}0 z_=g_9**_BPC-skgoV>i$Km5bXOZ~$?yu8#u{KLyj{lh=Jyvzga!{Ftm{^1{E;~V`$ zPhKASNB+P+ygc;(xOjg<;nn;_c||)0g=hLf{zCs0Kj~lLnSQph)3q5(`OZ`GmULNt#ez=}`dBmglCU6~8>#yZM;_W4#f9mm@{hMXK zq5RO(2llz78oFxx!NW8C&Y0QkA5G^6oDUv)(s}#(N$pvAd8t3>$;;z>lplKX@;Dzn z^yKAnK6vQY%gcU*p1eHHM||jMY<#0X=*i3De8h*Iygbea4?TH#oDUv)^71%8_QUFQ z|6k`D{m6bpeCP>$dx0A4-`I=(I6rp%S-hn`i?{S=@s|E9-qN4N%YKBO^#1E?f1Hp0 zm-@5f<9zVYlQ%xj2M;}Yd7KX(dh+r(A3XHr<#B#Vf4uz~{k1i Date: Sat, 3 Oct 2015 13:00:51 -0400 Subject: [PATCH 073/130] Updated Python API MultiGroupXS.load_from_statepoint(...) to properly handle tally slicing of distribcell tallies --- .../examples/multi-group-cross-sections.ipynb | 589 +----------------- .../examples/multi-group-cross-sections.rst | 11 + docs/source/pythonapi/index.rst | 1 + openmc/mgxs/mgxs.py | 14 +- openmc/tallies.py | 3 +- 5 files changed, 50 insertions(+), 568 deletions(-) create mode 100644 docs/source/pythonapi/examples/multi-group-cross-sections.rst diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 14392ec97..e7820bca8 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -452,7 +452,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 12:30:47\n", + " Date/Time: 2015-10-03 12:56:30\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -537,20 +537,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.8800E-01 seconds\n", - " Reading cross sections = 8.8000E-02 seconds\n", - " Total time in simulation = 1.4079E+01 seconds\n", - " Time in transport only = 1.4061E+01 seconds\n", - " Time in inactive batches = 2.0330E+00 seconds\n", - " Time in active batches = 1.2046E+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", + " Total time for initialization = 6.4800E-01 seconds\n", + " Reading cross sections = 1.5500E-01 seconds\n", + " Total time in simulation = 1.6951E+01 seconds\n", + " Time in transport only = 1.6927E+01 seconds\n", + " Time in inactive batches = 3.1560E+00 seconds\n", + " Time in active batches = 1.3795E+01 seconds\n", + " Time synchronizing fission bank = 7.0000E-03 seconds\n", + " Sampling source sites = 4.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 = 3.0000E-03 seconds\n", - " Total time elapsed = 1.4478E+01 seconds\n", - " Calculation Rate (inactive) = 12297.1 neutrons/second\n", - " Calculation Rate (active) = 8301.51 neutrons/second\n", + " Total time elapsed = 1.7614E+01 seconds\n", + " Calculation Rate (inactive) = 7921.42 neutrons/second\n", + " Calculation Rate (active) = 7249.00 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1492,137 +1492,6 @@ "collapsed": false }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " .d88888b. 888b d888 .d8888b.\n", - " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", - " 888 888 88888b.d88888 888 888\n", - " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", - " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", - " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", - " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", - " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", - "__________________888______________________________________________________\n", - " 888\n", - " 888\n", - "\n", - " Copyright: 2011-2015 Massachusetts Institute of Technology\n", - " License: http://mit-crpg.github.io/openmc/license.html\n", - " Version: 0.7.0\n", - " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 12:31:02\n", - " MPI Processes: 1\n", - "\n", - " ===========================================================================\n", - " ========================> INITIALIZATION <=========================\n", - " ===========================================================================\n", - "\n", - " Reading settings XML file...\n", - " Reading cross sections XML file...\n", - " Reading geometry XML file...\n", - " Reading materials XML file...\n", - " Reading tallies XML file...\n", - " Building neighboring cells lists for each surface...\n", - " Loading ACE cross section table: 92238.71c\n", - " Loading ACE cross section table: 8016.71c\n", - " Loading ACE cross section table: 92235.71c\n", - " Loading ACE cross section table: 1001.71c\n", - " Loading ACE cross section table: 40090.71c\n", - " Initializing source particles...\n", - "\n", - " ===========================================================================\n", - " ====================> K EIGENVALUE SIMULATION <====================\n", - " ===========================================================================\n", - "\n", - " Bat./Gen. k Average k \n", - " ========= ======== ==================== \n", - " 1/1 1.23064 \n", - " 2/1 1.18217 \n", - " 3/1 1.20248 \n", - " 4/1 1.20841 \n", - " 5/1 1.25078 \n", - " 6/1 1.26156 \n", - " 7/1 1.18239 \n", - " 8/1 1.24391 \n", - " 9/1 1.22294 \n", - " 10/1 1.20654 \n", - " 11/1 1.24695 \n", - " 12/1 1.26717 1.25706 +/- 0.01011\n", - " 13/1 1.26830 1.26080 +/- 0.00693\n", - " 14/1 1.25206 1.25862 +/- 0.00537\n", - " 15/1 1.23449 1.25379 +/- 0.00637\n", - " 16/1 1.13532 1.23405 +/- 0.02042\n", - " 17/1 1.25230 1.23666 +/- 0.01745\n", - " 18/1 1.17655 1.22914 +/- 0.01688\n", - " 19/1 1.26829 1.23349 +/- 0.01551\n", - " 20/1 1.26274 1.23642 +/- 0.01418\n", - " 21/1 1.19211 1.23239 +/- 0.01344\n", - " 22/1 1.23183 1.23234 +/- 0.01227\n", - " 23/1 1.22292 1.23162 +/- 0.01131\n", - " 24/1 1.21154 1.23018 +/- 0.01057\n", - " 25/1 1.21882 1.22943 +/- 0.00987\n", - " 26/1 1.22321 1.22904 +/- 0.00924\n", - " 27/1 1.20043 1.22736 +/- 0.00884\n", - " 28/1 1.20998 1.22639 +/- 0.00839\n", - " 29/1 1.26327 1.22833 +/- 0.00817\n", - " 30/1 1.26615 1.23022 +/- 0.00798\n", - " 31/1 1.21810 1.22964 +/- 0.00761\n", - " 32/1 1.23946 1.23009 +/- 0.00727\n", - " 33/1 1.25718 1.23127 +/- 0.00705\n", - " 34/1 1.21614 1.23064 +/- 0.00678\n", - " 35/1 1.23962 1.23100 +/- 0.00651\n", - " 36/1 1.24640 1.23159 +/- 0.00628\n", - " 37/1 1.24546 1.23210 +/- 0.00607\n", - " 38/1 1.21329 1.23143 +/- 0.00588\n", - " 39/1 1.24137 1.23177 +/- 0.00569\n", - " 40/1 1.27335 1.23316 +/- 0.00567\n", - " 41/1 1.24768 1.23363 +/- 0.00550\n", - " 42/1 1.19014 1.23227 +/- 0.00550\n", - " 43/1 1.24273 1.23259 +/- 0.00534\n", - " 44/1 1.20201 1.23169 +/- 0.00526\n", - " 45/1 1.24084 1.23195 +/- 0.00511\n", - " 46/1 1.25992 1.23273 +/- 0.00503\n", - " 47/1 1.19931 1.23182 +/- 0.00497\n", - " 48/1 1.24106 1.23207 +/- 0.00484\n", - " 49/1 1.28278 1.23337 +/- 0.00489\n", - " 50/1 1.26711 1.23421 +/- 0.00484\n", - " Creating state point statepoint.50.h5...\n", - "\n", - " ===========================================================================\n", - " ======================> SIMULATION FINISHED <======================\n", - " ===========================================================================\n", - "\n", - "\n", - " =======================> TIMING STATISTICS <=======================\n", - "\n", - " Total time for initialization = 4.1100E-01 seconds\n", - " Reading cross sections = 1.1100E-01 seconds\n", - " Total time in simulation = 3.4700E+01 seconds\n", - " Time in transport only = 3.4683E+01 seconds\n", - " Time in inactive batches = 3.7780E+00 seconds\n", - " Time in active batches = 3.0922E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 2.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 = 9.0000E-03 seconds\n", - " Total time elapsed = 3.5131E+01 seconds\n", - " Calculation Rate (inactive) = 6617.26 neutrons/second\n", - " Calculation Rate (active) = 3233.94 neutrons/second\n", - "\n", - " ============================> RESULTS <============================\n", - "\n", - " k-effective (Collision) = 1.23174 +/- 0.00461\n", - " k-effective (Track-length) = 1.23421 +/- 0.00484\n", - " k-effective (Absorption) = 1.23034 +/- 0.00239\n", - " Combined k-effective = 1.23109 +/- 0.00215\n", - " Leakage Fraction = 0.00000 +/- 0.00000\n", - "\n" - ] - }, { "data": { "text/plain": [ @@ -1638,9 +1507,9 @@ "# Delete old HDF5 files\n", "!rm *.h5\n", "\n", - "# Run OpenMC!\n", + "# Run OpenMC with the output throttled!\n", "executor = openmc.Executor()\n", - "executor.run_simulation()" + "executor.run_simulation(output=False)" ] }, { @@ -1999,7 +1868,7 @@ "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2274,181 +2143,11 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", - "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.574798\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.680220\tres = 4.252E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.661620\tres = 1.834E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.660063\tres = 2.734E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.644413\tres = 2.354E-03\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.627431\tres = 2.371E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.608477\tres = 2.635E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.589425\tres = 3.021E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.571080\tres = 3.131E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.553841\tres = 3.112E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.538232\tres = 3.019E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.524518\tres = 2.818E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.512887\tres = 2.548E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.503407\tres = 2.218E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.496149\tres = 1.848E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.491110\tres = 1.442E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.488262\tres = 1.016E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.487559\tres = 5.798E-03\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.488929\tres = 1.441E-03\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.492277\tres = 2.810E-03\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.497495\tres = 6.848E-03\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.504468\tres = 1.060E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.513071\tres = 1.402E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.523171\tres = 1.705E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.534637\tres = 1.969E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.547332\tres = 2.192E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.561124\tres = 2.375E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.575881\tres = 2.520E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.591472\tres = 2.630E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.607776\tres = 2.707E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.624672\tres = 2.756E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.642047\tres = 2.780E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.659796\tres = 2.781E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.677818\tres = 2.764E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.696019\tres = 2.731E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.714314\tres = 2.685E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.732625\tres = 2.629E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.750879\tres = 2.563E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.769011\tres = 2.492E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.786963\tres = 2.415E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.804681\tres = 2.334E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.822119\tres = 2.251E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.839238\tres = 2.167E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.856002\tres = 2.082E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.872382\tres = 1.997E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.888351\tres = 1.913E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.903889\tres = 1.831E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.918979\tres = 1.749E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.933609\tres = 1.669E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.947768\tres = 1.592E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.961451\tres = 1.517E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.974653\tres = 1.444E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.987374\tres = 1.373E-02\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.999614\tres = 1.305E-02\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.011376\tres = 1.240E-02\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.022667\tres = 1.177E-02\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.033492\tres = 1.116E-02\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.043858\tres = 1.058E-02\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.053776\tres = 1.003E-02\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.063254\tres = 9.501E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.072304\tres = 8.994E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.080937\tres = 8.512E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.089165\tres = 8.051E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.097001\tres = 7.612E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.104457\tres = 7.194E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.111546\tres = 6.797E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.118282\tres = 6.419E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.124677\tres = 6.060E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.130743\tres = 5.719E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.136495\tres = 5.394E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.141946\tres = 5.087E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.147109\tres = 4.796E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.151994\tres = 4.520E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.156615\tres = 4.259E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.160984\tres = 4.011E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.165111\tres = 3.777E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.169010\tres = 3.555E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.172690\tres = 3.346E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.176162\tres = 3.148E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.179436\tres = 2.960E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.182522\tres = 2.784E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.185431\tres = 2.617E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.188170\tres = 2.460E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.190750\tres = 2.311E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.193177\tres = 2.171E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.195460\tres = 2.039E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.197609\tres = 1.914E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.199628\tres = 1.797E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.201525\tres = 1.685E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.203309\tres = 1.582E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.204983\tres = 1.484E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.206555\tres = 1.391E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.208032\tres = 1.305E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.209416\tres = 1.224E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.210716\tres = 1.146E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.211934\tres = 1.075E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.213078\tres = 1.006E-03\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.214149\tres = 9.432E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.215152\tres = 8.828E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.216093\tres = 8.267E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.216974\tres = 7.742E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.217799\tres = 7.244E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.218572\tres = 6.782E-04\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.219295\tres = 6.344E-04\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.219972\tres = 5.932E-04\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.220605\tres = 5.554E-04\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.221198\tres = 5.190E-04\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.221753\tres = 4.854E-04\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.222271\tres = 4.540E-04\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.222756\tres = 4.243E-04\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.223210\tres = 3.967E-04\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.223633\tres = 3.709E-04\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.224029\tres = 3.461E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.224399\tres = 3.238E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.224746\tres = 3.022E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.225068\tres = 2.827E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.225369\tres = 2.633E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.225651\tres = 2.460E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.225914\tres = 2.299E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.226160\tres = 2.147E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.226390\tres = 2.007E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.226604\tres = 1.871E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.226803\tres = 1.741E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.226990\tres = 1.628E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.227164\tres = 1.522E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.227326\tres = 1.414E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.227478\tres = 1.322E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.227619\tres = 1.233E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.227751\tres = 1.150E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.227874\tres = 1.077E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.227988\tres = 1.001E-04\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.228095\tres = 9.273E-05\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.228195\tres = 8.720E-05\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.228288\tres = 8.102E-05\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.228374\tres = 7.574E-05\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.228455\tres = 7.035E-05\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.228530\tres = 6.542E-05\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.228601\tres = 6.126E-05\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.228666\tres = 5.717E-05\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.228727\tres = 5.295E-05\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.228783\tres = 4.953E-05\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.228835\tres = 4.580E-05\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.228885\tres = 4.264E-05\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.228931\tres = 3.986E-05\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.228973\tres = 3.729E-05\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.229013\tres = 3.467E-05\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.229051\tres = 3.219E-05\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.229085\tres = 3.040E-05\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.229118\tres = 2.835E-05\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.229147\tres = 2.611E-05\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.229174\tres = 2.401E-05\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.229201\tres = 2.208E-05\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.229225\tres = 2.135E-05\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.229247\tres = 1.992E-05\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.229268\tres = 1.797E-05\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.229288\tres = 1.687E-05\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.229306\tres = 1.559E-05\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.229322\tres = 1.474E-05\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.229338\tres = 1.351E-05\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.229352\tres = 1.242E-05\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.229366\tres = 1.182E-05\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.229378\tres = 1.086E-05\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.229390\tres = 1.005E-05\n" - ] - } - ], + "outputs": [], "source": [ + "# Throttle OpenMOC output to screen\n", + "openmoc.log.set_log_level('WARNING')\n", + "\n", "# Generate tracks for OpenMOC\n", "openmoc_geometry.initializeFlatSourceRegions()\n", "track_generator = openmoc.TrackGenerator(openmoc_geometry, 128, 0.1)\n", @@ -2503,7 +2202,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2544,251 +2243,11 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 52, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ NORMAL ] Importing ray tracing data from file...\n", - "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.496342\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.558070\tres = 5.037E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.519062\tres = 1.244E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.510118\tres = 6.990E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.497533\tres = 1.723E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.489754\tres = 2.467E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.484192\tres = 1.564E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.481187\tres = 1.136E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.480359\tres = 6.206E-03\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.481504\tres = 1.721E-03\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.484422\tres = 2.384E-03\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.488925\tres = 6.059E-03\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.494842\tres = 9.295E-03\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.502013\tres = 1.210E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.510294\tres = 1.449E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.519552\tres = 1.650E-02\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.529662\tres = 1.814E-02\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.540514\tres = 1.946E-02\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.552005\tres = 2.049E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.564041\tres = 2.126E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.576537\tres = 2.180E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.589414\tres = 2.215E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.602601\tres = 2.233E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.616034\tres = 2.237E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.629654\tres = 2.229E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.643407\tres = 2.211E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.657246\tres = 2.184E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.671127\tres = 2.151E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.685011\tres = 2.112E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.698862\tres = 2.069E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.712650\tres = 2.022E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.726345\tres = 1.973E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.739923\tres = 1.922E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.753361\tres = 1.869E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.766641\tres = 1.816E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.779744\tres = 1.763E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.792655\tres = 1.709E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.805362\tres = 1.656E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.817853\tres = 1.603E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.830119\tres = 1.551E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.842152\tres = 1.500E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.853945\tres = 1.450E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.865493\tres = 1.400E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.876791\tres = 1.352E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.887837\tres = 1.305E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 0.898630\tres = 1.260E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 0.909165\tres = 1.216E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 0.919445\tres = 1.172E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 0.929468\tres = 1.131E-02\n", - "[ NORMAL ] Iteration 49:\tk_eff = 0.939236\tres = 1.090E-02\n", - "[ NORMAL ] Iteration 50:\tk_eff = 0.948749\tres = 1.051E-02\n", - "[ NORMAL ] Iteration 51:\tk_eff = 0.958010\tres = 1.013E-02\n", - "[ NORMAL ] Iteration 52:\tk_eff = 0.967022\tres = 9.762E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 0.975787\tres = 9.406E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 0.984307\tres = 9.064E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 0.992586\tres = 8.731E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.000628\tres = 8.411E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.008438\tres = 8.102E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.016018\tres = 7.805E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.023372\tres = 7.517E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.030506\tres = 7.237E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.037423\tres = 6.971E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.044129\tres = 6.712E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.050628\tres = 6.464E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.056924\tres = 6.224E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.063023\tres = 5.993E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.068929\tres = 5.771E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.074647\tres = 5.555E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.080180\tres = 5.349E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.085536\tres = 5.149E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.090717\tres = 4.958E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.095728\tres = 4.773E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.100575\tres = 4.595E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.105261\tres = 4.424E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.109791\tres = 4.257E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.114171\tres = 4.099E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.118403\tres = 3.946E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.122493\tres = 3.799E-03\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.126443\tres = 3.656E-03\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.130259\tres = 3.519E-03\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.133946\tres = 3.388E-03\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.137505\tres = 3.262E-03\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.140942\tres = 3.139E-03\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.144260\tres = 3.021E-03\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.147464\tres = 2.908E-03\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.150556\tres = 2.799E-03\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.153540\tres = 2.695E-03\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.156419\tres = 2.593E-03\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.159198\tres = 2.496E-03\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.161878\tres = 2.403E-03\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.164464\tres = 2.312E-03\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.166959\tres = 2.225E-03\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.169365\tres = 2.143E-03\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.171685\tres = 2.061E-03\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.173922\tres = 1.984E-03\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.176080\tres = 1.910E-03\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.178160\tres = 1.838E-03\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.180166\tres = 1.769E-03\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.182100\tres = 1.702E-03\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.183965\tres = 1.639E-03\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.185761\tres = 1.577E-03\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.187493\tres = 1.517E-03\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.189162\tres = 1.461E-03\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.190771\tres = 1.405E-03\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.192321\tres = 1.353E-03\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.193815\tres = 1.302E-03\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.195253\tres = 1.253E-03\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.196640\tres = 1.205E-03\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.197976\tres = 1.160E-03\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.199263\tres = 1.116E-03\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.200504\tres = 1.074E-03\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.201698\tres = 1.034E-03\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.202848\tres = 9.950E-04\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.203957\tres = 9.570E-04\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.205024\tres = 9.215E-04\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.206052\tres = 8.863E-04\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.207043\tres = 8.531E-04\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.207995\tres = 8.214E-04\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.208913\tres = 7.891E-04\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.209798\tres = 7.597E-04\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.210649\tres = 7.320E-04\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.211469\tres = 7.034E-04\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.212259\tres = 6.771E-04\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.213019\tres = 6.521E-04\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.213749\tres = 6.268E-04\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.214455\tres = 6.023E-04\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.215133\tres = 5.809E-04\n", - "[ NORMAL ] Iteration 127:\tk_eff = 1.215786\tres = 5.588E-04\n", - "[ NORMAL ] Iteration 128:\tk_eff = 1.216414\tres = 5.368E-04\n", - "[ NORMAL ] Iteration 129:\tk_eff = 1.217020\tres = 5.168E-04\n", - "[ NORMAL ] Iteration 130:\tk_eff = 1.217601\tres = 4.980E-04\n", - "[ NORMAL ] Iteration 131:\tk_eff = 1.218162\tres = 4.780E-04\n", - "[ NORMAL ] Iteration 132:\tk_eff = 1.218703\tres = 4.601E-04\n", - "[ NORMAL ] Iteration 133:\tk_eff = 1.219222\tres = 4.443E-04\n", - "[ NORMAL ] Iteration 134:\tk_eff = 1.219722\tres = 4.260E-04\n", - "[ NORMAL ] Iteration 135:\tk_eff = 1.220203\tres = 4.096E-04\n", - "[ NORMAL ] Iteration 136:\tk_eff = 1.220667\tres = 3.946E-04\n", - "[ NORMAL ] Iteration 137:\tk_eff = 1.221113\tres = 3.800E-04\n", - "[ NORMAL ] Iteration 138:\tk_eff = 1.221542\tres = 3.655E-04\n", - "[ NORMAL ] Iteration 139:\tk_eff = 1.221954\tres = 3.510E-04\n", - "[ NORMAL ] Iteration 140:\tk_eff = 1.222352\tres = 3.378E-04\n", - "[ NORMAL ] Iteration 141:\tk_eff = 1.222734\tres = 3.251E-04\n", - "[ NORMAL ] Iteration 142:\tk_eff = 1.223102\tres = 3.131E-04\n", - "[ NORMAL ] Iteration 143:\tk_eff = 1.223457\tres = 3.009E-04\n", - "[ NORMAL ] Iteration 144:\tk_eff = 1.223798\tres = 2.896E-04\n", - "[ NORMAL ] Iteration 145:\tk_eff = 1.224127\tres = 2.791E-04\n", - "[ NORMAL ] Iteration 146:\tk_eff = 1.224442\tres = 2.684E-04\n", - "[ NORMAL ] Iteration 147:\tk_eff = 1.224746\tres = 2.578E-04\n", - "[ NORMAL ] Iteration 148:\tk_eff = 1.225039\tres = 2.481E-04\n", - "[ NORMAL ] Iteration 149:\tk_eff = 1.225320\tres = 2.392E-04\n", - "[ NORMAL ] Iteration 150:\tk_eff = 1.225591\tres = 2.296E-04\n", - "[ NORMAL ] Iteration 151:\tk_eff = 1.225852\tres = 2.208E-04\n", - "[ NORMAL ] Iteration 152:\tk_eff = 1.226103\tres = 2.125E-04\n", - "[ NORMAL ] Iteration 153:\tk_eff = 1.226344\tres = 2.047E-04\n", - "[ NORMAL ] Iteration 154:\tk_eff = 1.226575\tres = 1.965E-04\n", - "[ NORMAL ] Iteration 155:\tk_eff = 1.226799\tres = 1.888E-04\n", - "[ NORMAL ] Iteration 156:\tk_eff = 1.227014\tres = 1.822E-04\n", - "[ NORMAL ] Iteration 157:\tk_eff = 1.227221\tres = 1.750E-04\n", - "[ NORMAL ] Iteration 158:\tk_eff = 1.227419\tres = 1.687E-04\n", - "[ NORMAL ] Iteration 159:\tk_eff = 1.227611\tres = 1.619E-04\n", - "[ NORMAL ] Iteration 160:\tk_eff = 1.227794\tres = 1.560E-04\n", - "[ NORMAL ] Iteration 161:\tk_eff = 1.227972\tres = 1.495E-04\n", - "[ NORMAL ] Iteration 162:\tk_eff = 1.228142\tres = 1.442E-04\n", - "[ NORMAL ] Iteration 163:\tk_eff = 1.228307\tres = 1.391E-04\n", - "[ NORMAL ] Iteration 164:\tk_eff = 1.228464\tres = 1.338E-04\n", - "[ NORMAL ] Iteration 165:\tk_eff = 1.228616\tres = 1.283E-04\n", - "[ NORMAL ] Iteration 166:\tk_eff = 1.228762\tres = 1.235E-04\n", - "[ NORMAL ] Iteration 167:\tk_eff = 1.228902\tres = 1.183E-04\n", - "[ NORMAL ] Iteration 168:\tk_eff = 1.229037\tres = 1.145E-04\n", - "[ NORMAL ] Iteration 169:\tk_eff = 1.229167\tres = 1.099E-04\n", - "[ NORMAL ] Iteration 170:\tk_eff = 1.229293\tres = 1.056E-04\n", - "[ NORMAL ] Iteration 171:\tk_eff = 1.229413\tres = 1.022E-04\n", - "[ NORMAL ] Iteration 172:\tk_eff = 1.229529\tres = 9.787E-05\n", - "[ NORMAL ] Iteration 173:\tk_eff = 1.229641\tres = 9.401E-05\n", - "[ NORMAL ] Iteration 174:\tk_eff = 1.229748\tres = 9.086E-05\n", - "[ NORMAL ] Iteration 175:\tk_eff = 1.229851\tres = 8.685E-05\n", - "[ NORMAL ] Iteration 176:\tk_eff = 1.229950\tres = 8.395E-05\n", - "[ NORMAL ] Iteration 177:\tk_eff = 1.230046\tres = 8.088E-05\n", - "[ NORMAL ] Iteration 178:\tk_eff = 1.230138\tres = 7.760E-05\n", - "[ NORMAL ] Iteration 179:\tk_eff = 1.230226\tres = 7.451E-05\n", - "[ NORMAL ] Iteration 180:\tk_eff = 1.230310\tres = 7.146E-05\n", - "[ NORMAL ] Iteration 181:\tk_eff = 1.230392\tres = 6.878E-05\n", - "[ NORMAL ] Iteration 182:\tk_eff = 1.230470\tres = 6.632E-05\n", - "[ NORMAL ] Iteration 183:\tk_eff = 1.230546\tres = 6.372E-05\n", - "[ NORMAL ] Iteration 184:\tk_eff = 1.230619\tres = 6.170E-05\n", - "[ NORMAL ] Iteration 185:\tk_eff = 1.230689\tres = 5.908E-05\n", - "[ NORMAL ] Iteration 186:\tk_eff = 1.230756\tres = 5.654E-05\n", - "[ NORMAL ] Iteration 187:\tk_eff = 1.230821\tres = 5.487E-05\n", - "[ NORMAL ] Iteration 188:\tk_eff = 1.230883\tres = 5.247E-05\n", - "[ NORMAL ] Iteration 189:\tk_eff = 1.230943\tres = 5.058E-05\n", - "[ NORMAL ] Iteration 190:\tk_eff = 1.231001\tres = 4.846E-05\n", - "[ NORMAL ] Iteration 191:\tk_eff = 1.231056\tres = 4.672E-05\n", - "[ NORMAL ] Iteration 192:\tk_eff = 1.231109\tres = 4.478E-05\n", - "[ NORMAL ] Iteration 193:\tk_eff = 1.231161\tres = 4.334E-05\n", - "[ NORMAL ] Iteration 194:\tk_eff = 1.231210\tres = 4.165E-05\n", - "[ NORMAL ] Iteration 195:\tk_eff = 1.231258\tres = 4.022E-05\n", - "[ NORMAL ] Iteration 196:\tk_eff = 1.231303\tres = 3.850E-05\n", - "[ NORMAL ] Iteration 197:\tk_eff = 1.231347\tres = 3.721E-05\n", - "[ NORMAL ] Iteration 198:\tk_eff = 1.231389\tres = 3.559E-05\n", - "[ NORMAL ] Iteration 199:\tk_eff = 1.231430\tres = 3.425E-05\n", - "[ NORMAL ] Iteration 200:\tk_eff = 1.231469\tres = 3.291E-05\n", - "[ NORMAL ] Iteration 201:\tk_eff = 1.231507\tres = 3.174E-05\n", - "[ NORMAL ] Iteration 202:\tk_eff = 1.231543\tres = 3.023E-05\n", - "[ NORMAL ] Iteration 203:\tk_eff = 1.231577\tres = 2.923E-05\n", - "[ NORMAL ] Iteration 204:\tk_eff = 1.231611\tres = 2.808E-05\n", - "[ NORMAL ] Iteration 205:\tk_eff = 1.231643\tres = 2.711E-05\n", - "[ NORMAL ] Iteration 206:\tk_eff = 1.231673\tres = 2.587E-05\n", - "[ NORMAL ] Iteration 207:\tk_eff = 1.231703\tres = 2.481E-05\n", - "[ NORMAL ] Iteration 208:\tk_eff = 1.231731\tres = 2.409E-05\n", - "[ NORMAL ] Iteration 209:\tk_eff = 1.231759\tres = 2.301E-05\n", - "[ NORMAL ] Iteration 210:\tk_eff = 1.231785\tres = 2.220E-05\n", - "[ NORMAL ] Iteration 211:\tk_eff = 1.231811\tres = 2.139E-05\n", - "[ NORMAL ] Iteration 212:\tk_eff = 1.231835\tres = 2.065E-05\n", - "[ NORMAL ] Iteration 213:\tk_eff = 1.231859\tres = 1.999E-05\n", - "[ NORMAL ] Iteration 214:\tk_eff = 1.231881\tres = 1.899E-05\n", - "[ NORMAL ] Iteration 215:\tk_eff = 1.231903\tres = 1.825E-05\n", - "[ NORMAL ] Iteration 216:\tk_eff = 1.231924\tres = 1.761E-05\n", - "[ NORMAL ] Iteration 217:\tk_eff = 1.231944\tres = 1.696E-05\n", - "[ NORMAL ] Iteration 218:\tk_eff = 1.231963\tres = 1.648E-05\n", - "[ NORMAL ] Iteration 219:\tk_eff = 1.231982\tres = 1.564E-05\n", - "[ NORMAL ] Iteration 220:\tk_eff = 1.232000\tres = 1.508E-05\n", - "[ NORMAL ] Iteration 221:\tk_eff = 1.232017\tres = 1.450E-05\n", - "[ NORMAL ] Iteration 222:\tk_eff = 1.232033\tres = 1.398E-05\n", - "[ NORMAL ] Iteration 223:\tk_eff = 1.232050\tres = 1.344E-05\n", - "[ NORMAL ] Iteration 224:\tk_eff = 1.232065\tres = 1.312E-05\n", - "[ NORMAL ] Iteration 225:\tk_eff = 1.232080\tres = 1.233E-05\n", - "[ NORMAL ] Iteration 226:\tk_eff = 1.232094\tres = 1.204E-05\n", - "[ NORMAL ] Iteration 227:\tk_eff = 1.232108\tres = 1.156E-05\n", - "[ NORMAL ] Iteration 228:\tk_eff = 1.232121\tres = 1.114E-05\n", - "[ NORMAL ] Iteration 229:\tk_eff = 1.232134\tres = 1.064E-05\n", - "[ NORMAL ] Iteration 230:\tk_eff = 1.232146\tres = 1.029E-05\n" - ] - } - ], + "outputs": [], "source": [ "# Generate tracks for OpenMOC\n", "openmoc_geometry.initializeFlatSourceRegions()\n", @@ -2802,7 +2261,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 53, "metadata": { "collapsed": false }, diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.rst b/docs/source/pythonapi/examples/multi-group-cross-sections.rst new file mode 100644 index 000000000..b2da0e1bc --- /dev/null +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.rst @@ -0,0 +1,11 @@ +==================================== +Multi-Group Cross Section Generation +==================================== + +.. only:: html + + .. notebook:: multi-group-cross-sections.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 12baf937d..09fbb3ac9 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -65,6 +65,7 @@ on a given module or class. examples/post-processing examples/pandas-dataframes examples/tally-arithmetic + examples/multi-group-cross-sections .. _Jupyter: https://jupyter.org/ .. _NumPy: http://www.numpy.org/ diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 445bdcabb..85b08362a 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -441,14 +441,24 @@ class MultiGroupXS(object): # Create Tallies to search for in StatePoint self.create_tallies() + # 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': + filters = [self.domain_type] + filter_bins = [(self.domain.id,)] + # Distribcell filters only accept single cell - neglect it when slicing + else: + filters = [] + filter_bins = [] + # Find, slice and store Tallies from StatePoint # The tally slicing is needed if tally merging was used for tally_type, tally in self.tallies.items(): sp_tally = statepoint.get_tally(tally.scores, tally.filters, tally.nuclides, estimator=tally.estimator) - sp_tally = sp_tally.get_slice(tally.scores, [self.domain_type], - [(self.domain.id,)], tally.nuclides) + sp_tally = sp_tally.get_slice(tally.scores, filters, + filter_bins, tally.nuclides) self.tallies[tally_type] = sp_tally def get_xs(self, groups='all', subdomains='all', nuclides='all', diff --git a/openmc/tallies.py b/openmc/tallies.py index dc58c2f6d..0bfdc299a 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2366,7 +2366,8 @@ class Tally(object): if filter_type in ['energy', 'energyout']: bin_indices.extend([bin_index, bin_index+1]) elif filter_type == 'distribcell': - bin_indices.append(0) + indices = [(bin,) for bin in range(filter.num_bins)] + bin_indices.extend(indices) else: bin_indices.append(bin_index) From 9451b374ab794227d636a6fb81b6ba004c81adca Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 13:06:28 -0400 Subject: [PATCH 074/130] Updated .gitignore with MGXS IPython Notebook-generated files, re-ran other Notebook examples to update documentation --- .gitignore | 7 +- .../examples/pandas-dataframes.ipynb | 1422 ++++++++++++++++- .../pythonapi/examples/tally-arithmetic.ipynb | 660 +++++++- 3 files changed, 1972 insertions(+), 117 deletions(-) diff --git a/.gitignore b/.gitignore index c5c4c729d..7c6e6d9c2 100644 --- a/.gitignore +++ b/.gitignore @@ -64,5 +64,8 @@ data/nndc # IPython notebook checkpoints .ipynb_checkpoints -# OpenMOC tracks -*.data \ No newline at end of file +# Multi-group cross section IPython Notebook +docs/source/pythonapi/examples/*.xml +docs/source/pythonapi/examples/*.png +docs/source/pythonapi/examples/*.xls +docs/source/pythonapi/examples/tracks \ No newline at end of file diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index f227e2f71..c7da78a6e 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -385,7 +385,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDExOjE3\nOjA5LTA0OjAw0jfqaAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QxMToxNzowOS0wNDow\nMKNqUtQAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDEzOjAz\nOjU5LTA0OjAwMu4u/QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QxMzowMzo1OS0wNDow\nMEOzlkEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -558,7 +558,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "rm: cannot remove ‘statepoint.*’: No such file or directory\n", "\n", " .d88888b. 888b d888 .d8888b.\n", " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", @@ -576,7 +575,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 11:17:09\n", + " Date/Time: 2015-10-03 13:03:59\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -644,20 +643,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 7.1300E-01 seconds\n", - " Reading cross sections = 1.5900E-01 seconds\n", - " Total time in simulation = 1.5700E+01 seconds\n", - " Time in transport only = 1.5659E+01 seconds\n", - " Time in inactive batches = 2.1510E+00 seconds\n", - " Time in active batches = 1.3549E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 3.9400E-01 seconds\n", + " Reading cross sections = 8.8000E-02 seconds\n", + " Total time in simulation = 1.0755E+01 seconds\n", + " Time in transport only = 1.0746E+01 seconds\n", + " Time in inactive batches = 1.2680E+00 seconds\n", + " Time in active batches = 9.4870E+00 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 2.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 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.6427E+01 seconds\n", - " Calculation Rate (inactive) = 5811.25 neutrons/second\n", - " Calculation Rate (active) = 2767.73 neutrons/second\n", + " Total time elapsed = 1.1159E+01 seconds\n", + " Calculation Rate (inactive) = 9858.04 neutrons/second\n", + " Calculation Rate (active) = 3952.78 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -718,20 +717,7 @@ "collapsed": false, "scrolled": true }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "10003", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the summary file and link with statepoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0msu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'summary.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlink_with_summary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msu\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/statepoint.pyc\u001b[0m in \u001b[0;36mlink_with_summary\u001b[1;34m(self, summary)\u001b[0m\n\u001b[0;32m 610\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mtally_id\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtally\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 611\u001b[0m \u001b[1;31m# Get the Tally name from the summary file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 612\u001b[1;33m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtally_id\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 613\u001b[0m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_summary\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mKeyError\u001b[0m: 10003" - ] - } - ], + "outputs": [], "source": [ "# Load the summary file and link with statepoint\n", "su = Summary('summary.h5')\n", @@ -747,11 +733,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10000\n", + "\tName =\tmesh tally\n", + "\tFilters =\t\n", + " \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", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], "source": [ "# Find the mesh tally with the StatePoint API\n", "tally = sp.get_tally(name='mesh tally')\n", @@ -769,11 +772,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.1127471 ]]\n", + "\n", + " [[ 0.06599162]]\n", + "\n", + " [[ 0.25310075]]\n", + "\n", + " [[ 0.10150973]]]\n" + ] + } + ], "source": [ "# Get the relative error for the thermal fission reaction \n", "# rates in the four corner pins \n", @@ -785,11 +802,271 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \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 1energy [MeV]scoremeanstd. dev.
xyz
0111(0.0e+00 - 6.3e-07)fission0.0002240.000025
1111(0.0e+00 - 6.3e-07)nu-fission0.0005460.000062
2111(6.3e-07 - 2.0e+01)fission0.0000710.000004
3111(6.3e-07 - 2.0e+01)nu-fission0.0001870.000010
4121(0.0e+00 - 6.3e-07)fission0.0003920.000045
5121(0.0e+00 - 6.3e-07)nu-fission0.0009550.000110
6121(6.3e-07 - 2.0e+01)fission0.0000960.000005
7121(6.3e-07 - 2.0e+01)nu-fission0.0002520.000014
8131(0.0e+00 - 6.3e-07)fission0.0005510.000053
9131(0.0e+00 - 6.3e-07)nu-fission0.0013430.000130
10131(6.3e-07 - 2.0e+01)fission0.0001310.000008
11131(6.3e-07 - 2.0e+01)nu-fission0.0003430.000019
12141(0.0e+00 - 6.3e-07)fission0.0006880.000063
13141(0.0e+00 - 6.3e-07)nu-fission0.0016760.000153
14141(6.3e-07 - 2.0e+01)fission0.0001510.000007
15141(6.3e-07 - 2.0e+01)nu-fission0.0003950.000019
16151(0.0e+00 - 6.3e-07)fission0.0007850.000065
17151(0.0e+00 - 6.3e-07)nu-fission0.0019140.000158
18151(6.3e-07 - 2.0e+01)fission0.0001870.000008
19151(6.3e-07 - 2.0e+01)nu-fission0.0004870.000019
\n", + "
" + ], + "text/plain": [ + " mesh 1 energy [MeV] score mean std. dev.\n", + " x y z \n", + "0 1 1 1 (0.0e+00 - 6.3e-07) fission 0.000224 0.000025\n", + "1 1 1 1 (0.0e+00 - 6.3e-07) nu-fission 0.000546 0.000062\n", + "2 1 1 1 (6.3e-07 - 2.0e+01) fission 0.000071 0.000004\n", + "3 1 1 1 (6.3e-07 - 2.0e+01) nu-fission 0.000187 0.000010\n", + "4 1 2 1 (0.0e+00 - 6.3e-07) fission 0.000392 0.000045\n", + "5 1 2 1 (0.0e+00 - 6.3e-07) nu-fission 0.000955 0.000110\n", + "6 1 2 1 (6.3e-07 - 2.0e+01) fission 0.000096 0.000005\n", + "7 1 2 1 (6.3e-07 - 2.0e+01) nu-fission 0.000252 0.000014\n", + "8 1 3 1 (0.0e+00 - 6.3e-07) fission 0.000551 0.000053\n", + "9 1 3 1 (0.0e+00 - 6.3e-07) nu-fission 0.001343 0.000130\n", + "10 1 3 1 (6.3e-07 - 2.0e+01) fission 0.000131 0.000008\n", + "11 1 3 1 (6.3e-07 - 2.0e+01) nu-fission 0.000343 0.000019\n", + "12 1 4 1 (0.0e+00 - 6.3e-07) fission 0.000688 0.000063\n", + "13 1 4 1 (0.0e+00 - 6.3e-07) nu-fission 0.001676 0.000153\n", + "14 1 4 1 (6.3e-07 - 2.0e+01) fission 0.000151 0.000007\n", + "15 1 4 1 (6.3e-07 - 2.0e+01) nu-fission 0.000395 0.000019\n", + "16 1 5 1 (0.0e+00 - 6.3e-07) fission 0.000785 0.000065\n", + "17 1 5 1 (0.0e+00 - 6.3e-07) nu-fission 0.001914 0.000158\n", + "18 1 5 1 (6.3e-07 - 2.0e+01) fission 0.000187 0.000008\n", + "19 1 5 1 (6.3e-07 - 2.0e+01) nu-fission 0.000487 0.000019" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Get a pandas dataframe for the mesh tally data\n", "df = tally.get_pandas_dataframe(nuclides=False)\n", @@ -800,11 +1077,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\nBPCvjMC6bD6xSh4AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create a boxplot to view the distribution of\n", "# fission and nu-fission rates in the pins\n", @@ -813,11 +1101,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nefX/AdmeWI23zkQnAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Extract thermal nu-fission rates from pandas\n", "fiss = df[df['score'] == 'nu-fission']\n", @@ -842,11 +1151,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10001\n", + "\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", + "\tEstimator =\tanalog\n", + "\n" + ] + } + ], "source": [ "# Find the cell Tally with the StatePoint API\n", "tally = sp.get_tally(name='cell tally')\n", @@ -857,11 +1182,202 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cellnuclidescoremeanstd. dev.
010000U-235scatter-Y0,00.0383300.001119
110000U-235scatter-Y1,-10.0000080.000341
210000U-235scatter-Y1,0-0.0003420.000342
310000U-235scatter-Y1,10.0002010.000262
410000U-235scatter-Y2,-20.0001360.000152
510000U-235scatter-Y2,-10.0000420.000131
610000U-235scatter-Y2,00.0003030.000185
710000U-235scatter-Y2,1-0.0004070.000184
810000U-235scatter-Y2,2-0.0001450.000120
910000U-238scatter-Y0,02.3193220.006166
1010000U-238scatter-Y1,-1-0.0236380.001940
1110000U-238scatter-Y1,0-0.0034630.001892
1210000U-238scatter-Y1,10.0250990.002270
1310000U-238scatter-Y2,-2-0.0006170.001197
1410000U-238scatter-Y2,-10.0025490.001187
1510000U-238scatter-Y2,00.0071210.001646
1610000U-238scatter-Y2,1-0.0000580.001323
1710000U-238scatter-Y2,2-0.0022350.000867
\n", + "
" + ], + "text/plain": [ + " cell nuclide score mean std. dev.\n", + "0 10000 U-235 scatter-Y0,0 0.038330 0.001119\n", + "1 10000 U-235 scatter-Y1,-1 0.000008 0.000341\n", + "2 10000 U-235 scatter-Y1,0 -0.000342 0.000342\n", + "3 10000 U-235 scatter-Y1,1 0.000201 0.000262\n", + "4 10000 U-235 scatter-Y2,-2 0.000136 0.000152\n", + "5 10000 U-235 scatter-Y2,-1 0.000042 0.000131\n", + "6 10000 U-235 scatter-Y2,0 0.000303 0.000185\n", + "7 10000 U-235 scatter-Y2,1 -0.000407 0.000184\n", + "8 10000 U-235 scatter-Y2,2 -0.000145 0.000120\n", + "9 10000 U-238 scatter-Y0,0 2.319322 0.006166\n", + "10 10000 U-238 scatter-Y1,-1 -0.023638 0.001940\n", + "11 10000 U-238 scatter-Y1,0 -0.003463 0.001892\n", + "12 10000 U-238 scatter-Y1,1 0.025099 0.002270\n", + "13 10000 U-238 scatter-Y2,-2 -0.000617 0.001197\n", + "14 10000 U-238 scatter-Y2,-1 0.002549 0.001187\n", + "15 10000 U-238 scatter-Y2,0 0.007121 0.001646\n", + "16 10000 U-238 scatter-Y2,1 -0.000058 0.001323\n", + "17 10000 U-238 scatter-Y2,2 -0.002235 0.000867" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Get a pandas dataframe for the cell tally data\n", "df = tally.get_pandas_dataframe()\n", @@ -879,11 +1395,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.00086668 0.0061658 ]\n", + " [ 0.00011981 0.00111862]]]\n" + ] + } + ], "source": [ "# Get the standard deviations for two of the spherical harmonic\n", "# scattering reaction rates \n", @@ -901,11 +1426,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tally\n", + "\tID =\t10002\n", + "\tName =\tdistribcell tally\n", + "\tFilters =\t\n", + " \t\tdistribcell\t[10002]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t[u'absorption', u'scatter']\n", + "\tEstimator =\ttracklength\n", + "\n" + ] + } + ], "source": [ "# Find the distribcell Tally with the StatePoint API\n", "tally = sp.get_tally(name='distribcell tally')\n", @@ -923,11 +1464,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.03658762]]]\n" + ] + } + ], "source": [ "# Get the relative error for the scattering reaction rates in\n", "# the first 30 distribcell instances \n", @@ -945,11 +1494,199 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
distribcellscoremeanstd. dev.
558279absorption0.0000810.000008
559279scatter0.0131090.000358
560280absorption0.0000880.000010
561280scatter0.0143950.000586
562281absorption0.0000970.000010
563281scatter0.0146370.000427
564282absorption0.0001070.000009
565282scatter0.0156830.000552
566283absorption0.0001100.000009
567283scatter0.0162930.000627
568284absorption0.0001110.000007
569284scatter0.0170320.000445
570285absorption0.0001120.000006
571285scatter0.0176660.000425
572286absorption0.0001230.000011
573286scatter0.0177060.000597
574287absorption0.0001080.000011
575287scatter0.0173390.000664
576288absorption0.0001290.000011
577288scatter0.0184520.000523
\n", + "
" + ], + "text/plain": [ + " distribcell score mean std. dev.\n", + "558 279 absorption 0.000081 0.000008\n", + "559 279 scatter 0.013109 0.000358\n", + "560 280 absorption 0.000088 0.000010\n", + "561 280 scatter 0.014395 0.000586\n", + "562 281 absorption 0.000097 0.000010\n", + "563 281 scatter 0.014637 0.000427\n", + "564 282 absorption 0.000107 0.000009\n", + "565 282 scatter 0.015683 0.000552\n", + "566 283 absorption 0.000110 0.000009\n", + "567 283 scatter 0.016293 0.000627\n", + "568 284 absorption 0.000111 0.000007\n", + "569 284 scatter 0.017032 0.000445\n", + "570 285 absorption 0.000112 0.000006\n", + "571 285 scatter 0.017666 0.000425\n", + "572 286 absorption 0.000123 0.000011\n", + "573 286 scatter 0.017706 0.000597\n", + "574 287 absorption 0.000108 0.000011\n", + "575 287 scatter 0.017339 0.000664\n", + "576 288 absorption 0.000129 0.000011\n", + "577 288 scatter 0.018452 0.000523" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Get a pandas dataframe for the distribcell tally data\n", "df = tally.get_pandas_dataframe(nuclides=False)\n", @@ -967,11 +1704,415 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
level 1level 2level 3distribcellscoremeanstd. dev.
cellunivlatcelluniv
idididxyzidid
01000301000100010002100000absorption0.0001310.000014
11000301000100010002100000scatter0.0185820.000680
21000301000110010002100001absorption0.0002200.000023
31000301000110010002100001scatter0.0287110.001186
41000301000120010002100002absorption0.0002950.000022
51000301000120010002100002scatter0.0387820.001084
61000301000130010002100003absorption0.0003310.000022
71000301000130010002100003scatter0.0457720.001084
81000301000140010002100004absorption0.0004190.000026
91000301000140010002100004scatter0.0559750.001344
101000301000150010002100005absorption0.0005140.000024
111000301000150010002100005scatter0.0632890.001605
121000301000160010002100006absorption0.0005910.000027
131000301000160010002100006scatter0.0710110.002058
141000301000170010002100007absorption0.0006710.000036
151000301000170010002100007scatter0.0778910.001952
161000301000180010002100008absorption0.0007210.000031
171000301000180010002100008scatter0.0863930.001722
181000301000190010002100009absorption0.0007480.000033
191000301000190010002100009scatter0.0908610.001669
\n", + "
" + ], + "text/plain": [ + " level 1 level 2 level 3 distribcell score \\\n", + " cell univ lat cell univ \n", + " id id id x y z id id \n", + "0 10003 0 10001 0 0 0 10002 10000 0 absorption \n", + "1 10003 0 10001 0 0 0 10002 10000 0 scatter \n", + "2 10003 0 10001 1 0 0 10002 10000 1 absorption \n", + "3 10003 0 10001 1 0 0 10002 10000 1 scatter \n", + "4 10003 0 10001 2 0 0 10002 10000 2 absorption \n", + "5 10003 0 10001 2 0 0 10002 10000 2 scatter \n", + "6 10003 0 10001 3 0 0 10002 10000 3 absorption \n", + "7 10003 0 10001 3 0 0 10002 10000 3 scatter \n", + "8 10003 0 10001 4 0 0 10002 10000 4 absorption \n", + "9 10003 0 10001 4 0 0 10002 10000 4 scatter \n", + "10 10003 0 10001 5 0 0 10002 10000 5 absorption \n", + "11 10003 0 10001 5 0 0 10002 10000 5 scatter \n", + "12 10003 0 10001 6 0 0 10002 10000 6 absorption \n", + "13 10003 0 10001 6 0 0 10002 10000 6 scatter \n", + "14 10003 0 10001 7 0 0 10002 10000 7 absorption \n", + "15 10003 0 10001 7 0 0 10002 10000 7 scatter \n", + "16 10003 0 10001 8 0 0 10002 10000 8 absorption \n", + "17 10003 0 10001 8 0 0 10002 10000 8 scatter \n", + "18 10003 0 10001 9 0 0 10002 10000 9 absorption \n", + "19 10003 0 10001 9 0 0 10002 10000 9 scatter \n", + "\n", + " mean std. dev. \n", + " \n", + " \n", + "0 0.000131 0.000014 \n", + "1 0.018582 0.000680 \n", + "2 0.000220 0.000023 \n", + "3 0.028711 0.001186 \n", + "4 0.000295 0.000022 \n", + "5 0.038782 0.001084 \n", + "6 0.000331 0.000022 \n", + "7 0.045772 0.001084 \n", + "8 0.000419 0.000026 \n", + "9 0.055975 0.001344 \n", + "10 0.000514 0.000024 \n", + "11 0.063289 0.001605 \n", + "12 0.000591 0.000027 \n", + "13 0.071011 0.002058 \n", + "14 0.000671 0.000036 \n", + "15 0.077891 0.001952 \n", + "16 0.000721 0.000031 \n", + "17 0.086393 0.001722 \n", + "18 0.000748 0.000033 \n", + "19 0.090861 0.001669 " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Get a pandas dataframe for the distribcell tally data\n", "df = tally.get_pandas_dataframe(summary=su, nuclides=False)\n", @@ -982,11 +2123,97 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "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", + "
meanstd. dev.
count289.000000289.000000
mean0.0004170.000020
std0.0002380.000008
min0.0000200.000003
25%0.0002140.000014
50%0.0003940.000019
75%0.0006270.000025
max0.0009150.000049
\n", + "
" + ], + "text/plain": [ + " mean std. dev.\n", + " \n", + " \n", + "count 289.000000 289.000000\n", + "mean 0.000417 0.000020\n", + "std 0.000238 0.000008\n", + "min 0.000020 0.000003\n", + "25% 0.000214 0.000014\n", + "50% 0.000394 0.000019\n", + "75% 0.000627 0.000025\n", + "max 0.000915 0.000049" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Show summary statistics for absorption distribcell tally data\n", "absorption = df[df['score'] == 'absorption']\n", @@ -1005,11 +2232,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mann-Whitney Test p-value: 0.498462484897\n" + ] + } + ], "source": [ "# Extract tally data from pins in the pins divided along y=x diagonal \n", "multi_index = ('level 2', 'lat',)\n", @@ -1035,11 +2270,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mann-Whitney Test p-value: 1.61253828675e-41\n" + ] + } + ], "source": [ "# Extract tally data from pins in the pins divided along y=-x diagonal\n", "multi_index = ('level 2', 'lat',)\n", @@ -1063,11 +2306,43 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/IPython/kernel/__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", + "See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\norlkyRKeP3+erVp1IWCgqI78DIFVDAuLossVo41pQ4rqwy2ZmHgjbbYuFKvqVlBVI1i3bnMajRMo\nZofbaLNF+F0sBAtI4yGNR2kSSvozMzO5Zs0aLlmyxFtp9Vr1d+p0K4HV9ATQgXrU6XoQeJ6KUpuT\nJz9T+EEoTugNG7amw5FIp7Mbw8NjvUUbe/S4g6Jib87VvO+Vty8e/WFh0QS20RPstdsT+eGHH+bZ\nfvPmzbTbI+l01qfVGsYFCxbx6aefZnh4RZrN5Vi/fjMeOnTIu/2MGTNoMPhWEn6Fwp1zG1W1OgcO\nHMLGjdvSZqtB4f6qR1Ep+B1GR1fzHmfQoH9RBNQ9x9nJ6OjqHDz4Ier1U7TnXtBmEdna1buFgIF3\n331/ntldcnIyq1evR5OpEnW6kVTVBD722JMFjvfp06dpt0dSuKNI4FM6nVH866+/Cv1fpaamagH5\ntfQ013I6b+XUqVO928yf/xLNZjtVNZ7h4bHctWuX9n/0XTDxGZs06cixY59gtWpN2Lx5F37zzTdM\nSUlhixadaTCYGB5eievWrStUUyCANB6hbTwkocWQIcNpNI7TTgbrKPzkHjdOCo1Ga5FWy0yfPkOr\ntOqpwjuPN97YgyS5ePF/tF7tRyiqurbnlCkFNzM6cuQIq1Spr13lhtFqrcpu3frmWVKbkZGhXUF7\nakMdpF7vok7XjqKrYWMCbVmhQrw3nrN//35tietSAl9RUdry3nvv56pVq7h161a63W5mZmZy8uTJ\ntFq7Myf/xU293uTN5J816wXabN00N46bJtNY3nrrXdoJdixFwPlhiuCzZzx3sly52AI/d3Z2Nleu\nXMlp06YV2nHw66+/ptOZ6HMiJ53O+oW23RVFJQdTLCvvps3Q3qaiVMxTBTctLY0HDx70xnPuvXeY\nj2EkdboF7Nbt9qu+V0kCaTyk8ZCUHCdOnGB0dDXa7T1osTQh0NXnhJRJo9FapFav9933EP0bS33P\nuLi6JMVJZOLEKbTZXLRY7HzwwVFXNUgJCU1pMEzTTtxfetu65ubo0aNUlGif9/yGQGXm5FecI+Ck\n3d6aGzdu9O63fft2tmnTnbVrt+SkSc/kuxJo69atVNUqFKu1xFV2eHis94R45coVdu9+G222GNrt\nNVizZmOePHmSnTr1pEgMbEaxuEClwdCLOt0TVJQYLl/+Zp73uh6OHDmi9WPxFMg8SoslLE/9sNx8\n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\nRCKRSCSB5/8ByMyfADZGvh4AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Extract the scatter tally data from pandas\n", "scatter = df[df['score'] == 'scatter']\n", @@ -1080,11 +2355,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEZCAYAAAB4hzlwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8U1X+//FXSgEptLRsLYu0ogLKIqCCyCgdHRkZFTec\nARQFHXdlRkRx+wpuP5fRcVy+4HwVBRfAfUdlM4iIgEpZZaeylLIJpWWn5PfHSZu2pG3a3pt7k7yf\nj0cezb259+aT0ySf3PO591wQEREREREREREREREREREREREREREREZvcD7zqdBAiItHsD8APwG5g\nJ/A9cEYNtzkEmF1m3njgsRpu105HgQIgH9gMvAjEh7juaOAte8KSWBfqm1DECknAF8DNwHtAXeAc\n4KCTQZWjFlBo83N0BtYBJwKzgBXAGJufU0TENc4AdlWyzI3AcmAPsAzo6p9/H7CmxPzL/PNPAfYD\nRzC/unf5t3EIk2zygU/9y7YAPgS2Yb6M7yzxvKOBDzC/wPOAGyj9izwD8+v+WuA3YDvwQIn16wET\ngN/98d8LbKzgdR4F2pSYfhd4ucT0C8AGfyw/YfawAC70v65D/te20D+/ITAOyAE2YfaS4vyPnYRJ\nOrv9cU+uIC4RkbBJBHZgunYuBFLKPH4V5gvtdP/0iUBr//3+QJr//l8xXS+p/unrOLb76A3g0RLT\nccDPwEOYPeQTgLVAH//jozFftP3808cBozg2KfwXs4fTGTgAtPM//hTwLebLuSWwGPOlXp6j/tcH\n0B7zZX5ticevxrRPHDAc2ALU8T82CnizzPY+BsZiklNTYB5wk/+xSZj6CP5tnF1BXCIiYdUe84W9\nETiM+RXfzP/YN5T+9V6RhQS+wIcQPCmUrCn0wPzCL+l+4HX//dGAt8zjozk2KbQo8fg8TIICk2Au\nKPHYDVS+p5CHSW5HMTWFivwOdAoSF5jkeACTyIoMBGb670/AJLOWlTyHSPHupUi4rACGAscDHTFf\nsv/xP9YK8+UazLWYRLDLf+sINK7C86b7n2tXidv9BBISmL2UyuSWuL8PaOC/34LSSSCUbXX1r/83\nzOtLL/HYCEw31G5/rA2BJuVsJx2ojdmbKHptr2D2GMB0ZXmA+cBSTPuLBKVCszhpJeZXbFE3x0ZM\n/3dZ6cD/AecBcwEfJkF4/I/7gqxTdt4GYD3QtpxYfEHWCbbd8mzBJLoV/unjq7Du+8ClmD2AoZji\n+z2Y17vMv8zvlP96N2LqDI0xex1lbSXQxr2A6Zgaw7oqxCgxQnsKEk7tMP3jRd0Yx2O6Oeb6p1/D\n/ELuhvkCPAlTU6iP+SLcgXnPDsXsKRTZitnLqF1mXslC7nxMYfZeTL97Lf82ig6H9XCsYPPK8x5m\nzyPZ//ruoGpJ5SlMW7TC1F6OYF5vHeBhzJFbRXIx3VlF8W0BpgL/9q8bh6lXnOt//Cr/dsHsefgI\nnjxElBQkrPIxffvzMH3pczEF2bv9j38APAFMxBxl9BGm2LoceM6/fC7my/z7EtudgflFnYs5sgjM\nkTinYrpSPsJ8CV4MdMH8Qt6O2fso+rItb0/BV2a6PI9iuozWY76g38cUrstTdltLMTWA4cDX/tsq\nIBtzdFXJovX7/r87MUcmgel+qoNpq9/9yxQV5s8AfiRwJNYw/3ZFwup4zNEYyzBv+GH++Y2AaZg3\n/FTMLyuRaHMr5v0vIn5pmF9lYIppKzHHlD+D2YUHGInZbRaJdGmY/vo4TDfZagI/hEQkiE+AP2EK\ncUXHl6cRKMyJRLLWwBJMt9gm4F/oQA6RcmVgjhFPpPQZrR4qP8NVRESiSAPMmaRFwxKUTQK/hzcc\nEREpj927t7UxY828hek+AnOoYBrmSJHmBI4WKdaiRQtfTk6OzaGJiESdtQQ/1ydkdh6S6sEcFric\nwBmrAJ9hxqrB//eTMuuRk5ODz+fTzedj1KhRtmzX8AW54fhrDndbROJNbaG2CHYjMJ5Wtdm5p9AL\nuAZzHHrRSI73Y442eg8zNkw2gbFjJIjs7GynQ3ANtUWA2iJAbWEtO5PC95S/J/InG59XRESqSWc0\nu9yQIUOcDsE11BYBaosAtYW1qjK2Szj5/P1jYhOPx0PwURs8qO1FIpP5XNfse117Ci7n9XqdDsE1\n1BYB4WiLRo0a4fF4dHPhrVGjRrb933XGpYgEtWvXLu01upR/j8Cebdu25ZpR95HN1H0klfF49F5w\nq/L+N+o+EhERSykpuJz60QPUFgFqC7GLkoJUKikpeMExKcm+YpeIOENJweUyMzOdDoH8/F0EGxLD\nzA8fN7SFW8RyW2RkZDBjxozi6cmTJ9OoUSO+++474uLiSExMJDExkbS0NC655BKmT59+zPoJCQnF\nyyUmJjJsmC59UURJQUQiStGeKsCECRO44447mDJlCq1btwYgLy+P/Px8Fi9ezAUXXMDll1/OhAkT\nSq3/xRdfkJ+fX3x78cUXHXktbqSk4HLqOw5QWwTEelv4fD7++9//MmLECKZOncpZZ511zDLNmjVj\n2LBhjB49mpEjRzoQZWRSUhCRiDNmzBhGjRrFzJkz6datW4XLXn755Wzbto2VK1cWz9OhtuXTeQox\nqirnKeichthU2XkKnkes+frwjaraeygjI4Ndu3Zx3nnn8dFHHxV3JWVnZ9OmTRuOHDlCXFzg9+6B\nAwdISEhgzpw59OzZk4yMDHbu3El8fODc3WeffZYbbrjBktcTDnaep6AzmkWkWqr6ZW4Vj8fDK6+8\nwmOPPcbf//53xo0bV+HymzdvBigeGsLj8fDpp59y3nnn2R5rJFL3kcvFet9xSWqLgFhvi9TUVGbM\nmMHs2bO57bbbKlz2448/JjU1lXbt2oUpusimpCAiEal58+bMmDGDr7/+muHDhxfPL+pW2bp1Ky+/\n/DKPPvooTz75ZKl11e1ZPnUfuVwsH49eltoiQG1hHH/88cycOZNzzz2X3NxcAJKTk/H5fNSvX58z\nzzyTDz74gD59+pRa75JLLqFWrVrF03369OHDDz8Ma+xupUJzjFKhWSqjAfHcSwPixbBY7zsuSW0R\noLYQuygpiIhIMXUfxSh1H0ll1H3kXuo+EhGRsFBScDn1HQeoLQLUFmIXJQURESmmmkKMUk1BKqOa\ngnuppiAiImGhpOBy6jsOUFsEqC3K17FjR7777junw4hYSgoiEpLyrtVt1S3Ua36XvRwnwPjx4znn\nnHMAWLp0Keeee26F28jOziYuLo6jR49WrzGimMY+cjmNcROgtghwoi0C1+q2a/uhdYWXvBxnTdlV\nMyksLCw1tlIk0Z6CiESVjIwMZs6cCcD8+fM544wzaNiwIWlpaYwYMQKgeE8iOTmZxMRE5s2bh8/n\n4/HHHycjI4PU1FSuu+469uzZU7zdN998k/T0dJo0aVK8XNHzjB49mv79+zN48GAaNmzIhAkTWLBg\nAT179iQlJYUWLVpw5513cvjw4eLtxcXFMXbsWE4++WSSkpJ4+OGHWbt2LT179iQ5OZkBAwaUWj5c\nlBRcTn3HAWqLgFhviwqvCFdiL+If//gHd911F3l5eaxbt46rrroKgNmzZwOQl5dHfn4+PXr04I03\n3mDChAl4vV7WrVtHQUEBd9xxBwDLly/n9ttvZ9KkSWzZsoW8vDxycnJKPe9nn33GVVddRV5eHoMG\nDaJWrVq88MIL7Ny5k7lz5zJjxgzGjBlTap2pU6eycOFCfvzxR55++mluvPFGJk2axIYNG1iyZAmT\nJk2ypL2qQklBRCKKz+fjsssuIyUlpfh2++23B+1SqlOnDqtXr2bHjh0kJCTQo0eP4m2U9c4773D3\n3XeTkZFB/fr1efLJJ5k8eTKFhYV88MEH9OvXj7PPPpvatWvz6KOPHvN8Z599Nv369QPguOOOo1u3\nbnTv3p24uDjS09O56aabmDVrVql17r33Xho0aMCpp55Kp06d6Nu3LxkZGSQlJdG3b18WLlxoVbOF\nTEnB5dSPHqC2CIjltii6nOauXbuKb2PGjAn6RT9u3DhWrVrFKaecQvfu3fnyyy/L3e6WLVtIT08v\nnm7dujVHjhxh69atbNmyhVatWhU/Vq9ePRo3blxq/ZKPA6xatYqLL76Y5s2b07BhQx588EF27txZ\napnU1NRS2yw7XVBQUElrWE9JQUQiXnndSSeddBITJ05k+/btjBw5kv79+7N///6gexUtWrQgOzu7\neHrDhg3Ex8eTlpZG8+bN2bRpU/Fj+/fvP+YLvuw2b731Vk499VTWrFlDXl4eTzzxREQc7aSk4HKx\n3ndcktoiQG0Rmrfffpvt27cD0LBhQzweD3FxcTRt2pS4uDjWrl1bvOzAgQN5/vnnyc7OpqCggAce\neIABAwYQFxfHlVdeyeeff87cuXM5dOgQo0ePrvTIpYKCAhITE0lISGDFihWMHTu20nhLbtOps8mV\nFEQkJImJKZgRFOy5me1XT3mHqX7zzTd07NiRxMRE7rrrLiZPnkzdunVJSEjgwQcfpFevXqSkpDB/\n/nyuv/56Bg8ezLnnnkubNm1ISEjgpZdeAqBDhw689NJLDBgwgBYtWpCYmEizZs2oW7duuc//7LPP\nMnHiRJKSkrjpppsYMGBAqWWCxVv2casOva0KjX0UozT2kVRGYx+Vr6CggJSUFNasWVOqDhEuGvtI\nRMRhn3/+Ofv27WPv3r2MGDGCzp07O5IQ7Kak4HLqOw5QWwSoLcLvs88+o2XLlrRs2ZK1a9cyefJk\np0OyhYa5EBEJwauvvsqrr77qdBi2U00hRtlZU0hKauQfJycgMTGFPXt+r3a8En6qKbiXnTUFJYUY\nZWdSCL68vmAijZKCe6nQHMPUdxygtghQW4hdVFMQkaBSUlIcOU5eKpeSUv1zOirj1v+4uo9spu4j\nkeij7iMREbGUkoLLqe84QG0RoLYIUFtYy+6k8DqwFVhSYt5oYBOw0H+70OYYREQkRHbXFM4BCoA3\ngU7+eaOAfODfFaynmoLNVFMQiT6RUFOYDewKMt+tBW4RkZjmVE3hTmARMA5IdiiGiKD+0gC1RYDa\nIkBtYS0nzlMYCzzqv/8Y8BxwQ9mFhgwZQkZGBgDJycl06dKl+BKERW8CTddsOqBoOvjygWUyyyxP\njZcPNiQGQL16Ddi3Lz9ovG5pPyens7KyXBWPk9NZWVmuiiec016vl/HjxwMUf1/WVDi6cTKAzwnU\nFEJ5TDUFm7mlpqBrNYhYJxJqCsE0L3H/ckofmSQiIg6yOylMAn4A2gEbgeuBp4HFmJpCb+Aum2OI\naMd29cQutUWA2iJAbWEtu2sKA4PMe93m5xQRkWpy66GhqinYTDUFkegTqTUFERFxKSUFl1N/aYDa\nIkBtEaC2sJaSgoiIFFNNIUappiASfVRTEBERSykpuJz6SwPUFgFqiwC1hbWUFKJcUlIjPB7PMbdY\nUN5rT0pqFBXPJ2IHt347qKZgkYr67KO9phDueoXqI+I01RRERMRSSgoup/7SALVFgNoiQG1hLSUF\nEREppppClFNNQTUFiR2qKYiIiKWUFFxO/aUBaosAtUWA2sJaSgoiIlJMNYUop5qCagoSO1RTEBER\nSykpuJz6SwMSEhI1jISf3hcBagtr2X2NZhHL7N9fQLDumfx8t/aCikQet36aVFOwSDTVFKyJo/zl\na0o1BXGaagoiImIpJQWXU3+pBKP3RYDawlpKCiIiUkw1hSinmoJqChI7VFMQERFLKSm4nPpLJRi9\nLwLUFtZSUhARkWKqKUQ51RRUU5DYoZqCRJD4oENUVGV5OyUlNdIQGiIoKbhe9PSXHsH8ii57q8ry\n9snP3xU0PjPffaLnfVFzagtrKSmIiEgx1RSinJtqClWNoyrbCHe9IhjVFMRpqimIiIilQkkKHwEX\nhbisWEz9pRKM3hcBagtrhXI9hbHAUOAl4D3gDWClnUGJyzQFOj0Erb+HxiuhTgEcjYcC6P9ef85o\ncQbnn3A+p7c4nTiPfjuIRLKq9D0lAwOAh4ANwKvA28BhG+JSTcEiNakprN+1nnum3cOH8z+ExSNg\nbR/YfiocTIJahyCxCROnT2T+5vl8vfZrdh/YzZWnXMn//v1/YctRSr+9VFMQsZsVNYVQV24MDAau\nAXKAicAfgI5AZk0CKIeSgkWqmxQ+XP4ht355K/886588eP6DcLjyL7s1v69h0pJJPPzxw3DwNFhw\nGywaDEfqVfh8Sgoi1rAiKYTiY+BX4AGgeZnHfrbpOX1ifPvttzVaH/CBL8it/Pmv/vyqr+VzLX0L\nNi+odBtBn9ODjzbTfAy82MeIZj56P+IjoepxVGXZqr72mixbnba2Wk3fF9FEbRGABSf0hFJTeBWY\nUmZeXeAgcHpNAxCX6QiPznqUb6/7lpMbn1y9bfiAdX8ytya/wtnPwZ3AL/fAnJGwr4mVEYuIhULZ\nzVgIdC0z7xegm/XhFPMnPampKnUfpS2Ewd1YdPciOqd2Dmkbwf5PQZdP8sA5t0KHd0230ty74UBy\n8DjKiy8Guo+SkhoFPYs6MTGFPXt+D2kbErvsrik0B1oA7wCDCHwik4BXgPY1eeJKKClYJOSkUHsf\n3NIFZq7Gt7RmX5gVnryWvB56PwbtPoO5w2Hug3BEScHKbUjssvvktT8DzwItgef8958DhmPqCxIG\nYTsGO3MUbOkGy2x+nt0nwKevw7gfoPkvcAfQaSJ4jtr8xNFFx+YHqC2sVVFNYbz/diXwYTiCEYek\nLobT3oQxS4F3w/OcO9vCex9Aaw/8+Xno8QJ882/Y2Cs8zy8iQVW0mzEYeAu4m9L7s0X7t/+2MS51\nH1kkpO6jay6EVRfB/DtxZOwjT6HZWzj/AdjUA6Y/DbtOrNI21H0kYn/3UYL/b2I5N4kGbaZDylr4\n+WbnYvDFweJr4OUVsPU0uLE79AGO2+1cTCIxSqOkupzX6yUzM7Pa61e6pzD0HHM00NKBxfPDvqdQ\ndn6DXPhjc2jXDL57CH66BY7WrnAbsbanUNP3RTRRWwSEa5TUZzBHHNUGZgA7MF1LoXgd2AosKTGv\nETANWAVMxQyfIU44/gdI2gzLr3I6ktIK0uBz4M3p0PYLuK2jOVpJRGwXSkZZBJwGXA5cjDn6aDbQ\nuaKV/M4BCoA3gU7+ec9gEsszwEggBbivzHraU7BIhXsKAy6FtRfAgttLzXd8T6Hs/JO+hj4jYO8y\nmPqzOUqq2nEEXz7S9hREggnXnkLREUoXAx8AeYR+KvVsoOyZOP2ACf77E4DLQtyWWKkx0GouZA11\nOpLKrbkQXsmCpcCgi+CKq82Z0iJiuVCSwufACsyQFjOAZsCBGjxnKqZLCf/f1BpsK+rZdgz26cDC\n6+FwQqWLusLReDPS1kurYFtHGNobrhwITe0+scKddGx+gNrCWqGMfXQf8C9gN1AI7AUutej5yx3A\naciQIWRkZACQnJxMly5diotJRW8CTYc2DV7/X/903FTTaTf170Eejy/aBS3DG1i/ePnyli1vecpM\nlxNfucsDhxLh+57w42nQYylcdx78DJ40T+CnRtBYSm4/roK4yy5f3mushfk4VP/5ioauqPT/VaY9\nvF4vWVlZrnl/OT2dlZXlqnjCOe31ehk/fjxA8fdlTYXa99QLSMcUm8F8kb8Z4roZmL2NoprCCsy7\nPRczlMa3HDtkhmoKFgnaR93hPTj9b/BmzYeXsGLcohpto/ZeOK0B9DjF7E3MGwZLBvn3gFwQXyXz\n7ahtSOyyoqYQyp7C20AbIIvSP41CTQplfQZcBzzt//tJNbcj1dXtVTOkYTQ4XB9+An5aBidOM2dG\nX3AvLP2bGcoxx4d7j7wWcZ9QagqnY/YUbsMMgFx0C8Uk4AegHbARc1nPp4ALMIeknueflnJY3l+a\nmAMtfjb7a1HFY64MN/FLU5TObwlXAbd2hrOeh4TtTgdoKfWjB6gtrBXKnsJSTDdPTjW2P7Cc+X+q\nxrbECqe+Dyv7wZEJlS8bqfJam5PeZv8PpL8EXV+HzEdg/XmmuL4G0Ph7IkGFsl/tBboA8zEX1gHT\n6dnPpphANQXLHNNHfcPZMOt/YM1fcHt/u6XbqJtnaildX4fkH2HRveZw3B3tQ9+GDfGppiBWCldN\nYbT/b8nOWb07I1HD36DxKnNFtFhzsCH8cqO5NfFAVx9c90czlPfCoWbI8IOVbkUk6oVSU/AC2Zgj\nj7yYPYaFtkUkpVjaX9rhPfj1Cv84QjFsBzDtGXh+A8y+H07+Cu4CLr8WMrwRcW0H9aMHqC2sFcqe\nwk3AjZgxi04EWgFjgfNtjEvs0PFdmPa001G4x9HasOoSc6vvgU5doe+d5ip0WUMh6zrY43SQIuEV\n6thH3YEfCVyreQmB8w7soJqCRYr7qJM2wi1d4dlcczx/JNUDLN1GZdv2maOzur5uried8zssfBdW\nXAqFdS2PTzUFsVK4xj46SOne1nhUU4g8bb+A1X39CUHK54GcM+DLMfDvTeYn0en/B3e3hL7DIC3L\n6QBFbBVKUpgFPIi56M4FwPuYM5QlDCzrL233uekmkdAdqWf2id+cDv+3APanwMB+cHM3s+9c7/cw\nBmOG2yh7S0pqFMYY3Ek1BWuFkhTuA7ZjPh43A1OAh+wMSixWey+0ng1r/ux0JJFr9wngfQT+s97U\nZVoD/2hjRmzN8GL/zvMRAkOF+TCjw/jIzy87CLFIzYTa99TM/3ebXYGUoZqCRTweD7T/GLq/BG/O\nKPkIkVcPCEdNoQrbqLcDTnvLDBtS6zD8shqycmFv2YF/rakpqNYglbG7puDBnKOwA1jpv+0ARtX0\nSSXM2qrryBb7G8OP/4QxS+GT8dAEuLMdXHENNFtS2doirlRRUrgLM+bRmZiBllMwPam9/I9JGNS4\nv9QDtP0SVl1sRTgSlAc2ng2fAv/JNtd7GNzHXBCo5TybntNr03Yjj2oK1qooKVwLDALWl5i3Drja\n/5hEgmbAoQbw+0lORxIbDiTD9/fBC+vN3tnfroT+QMo6pyMTCUlF3UBLgY7VeMwKqilYxNPLAym3\nwJdjyz5C5NUDXFZTCPV6Dz0bwFmNYcGtZqC+4vMdVFMQa9ldUzhczcfETdoA6y5wOorYdbg+fAeM\nWQKpS8zhrLZ1KYnUXEVJoTOQX87NzrOZpYSa9JceOHIAjscMGS3OKmgOkz+GWQ/DwEvh7GdruEGv\nFVFFBdUUrFXR6a21whaF2GLOhjnmDJMDyU6HIgB4YNnfYFNPuOoqaA35B/NJrJvodGAixUI5eU0c\nFLiYe9VNWzcN1loXi1gkrzW8MRsKoPf43uQW5FZjI5lWRxWxavIZkWMpKUQxJQUXK6wDX8CVp1zJ\n2ePOZvXO1U5HJAIoKbheVfpLk5IaBcbFqe/hl/W/wCb7YpOaiueh3g+x/s31tH2iLZ5GVTloxFu8\njWPHRKoTU+MkqaZgLSWFKGLGwfGPjXPCZPjtYl2L2NX84xn94oPZY+DaDGhYzW2Uuh0OMk/jJElo\n3Dpchc5TqIZSx7hffDPsOAV+vAvXHsPvyDZcHF/Pf0O3u2HcriAHB1gThz5X0S1c11OQSJQxC7J7\nOx2FVMXc4WbMgP5/g7gjTkcjMUpJweWq1V/aIBfqb4WtnS2PR2z2DYAH+oyoZEGv/bFECNUUrKWk\nEI3Sv4MNfwCfTjWJOEeBDyZDu8+g/SdORyMxSDWFKFJcU/jL7eaiMD+MwBV95a7ahtvj889rOc9c\n5e3VBea8BtUUJASqKUhwqidEvs09YO7dcPm14NEhZBI+SgouV+X+0oQdkLQRcrvaEo+E0Q93Q62D\n5spux/CGOxrXUk3BWkoK0Sb9O3PBl6MVDWslEcFXCz57Dc57CJKcDkZihWoKUcTj8cCFw8yInN/f\nVzQXV/WVO74Nt8cXZF7vRyFtFLyrmoJUTDUFOZbqCdFnzr2QBpwww+lIJAYoKbhclfpLjwNS1kLO\nGXaFI044chxMBS78Z4mT2rwOBuQuqilYS0khmqQDm86Co7WdjkSs9iuwr0k5RWcR66imEEU8f/bA\ngcfMdYADc3FtX7kj23B7fBUsm/YLXH0RvLgGDidUaxv6XEU31RSktAxUT4hmuV1hY084Y6zTkUgU\nU1JwuVD7S/MO5EETYHN3W+MRh3kfgV7/gvivnI7ENVRTsJaSQpSYs3EObAYK6zodithpW0fIzoT2\nHzkdiUQpJQWXC/X6s7OyZ8Fv9sYiLuEdDX0/gdp7nY7EFXSNZmspKUSJWb/Ngmyno5Cw2NEeNpwD\nXV93OhKJQkoKLhdKf2nBoQKWbluq6zHHkhnnmyu16ROsmoLFNEBOhJk1axZPPTWm1LwdDXM57vgE\n9h5Rd0LM2NEB8lvCKdmwzOlgJJooKbhc2f7S2bNn8/XXh4ABgZnnvUv8rkNhjUuclglz7oHec2CZ\nD/eecmQ/1RSspZ3PCOTxdAD+Fril76DOliYORyVht+oSqAOkz3Y6EokiSgouV2l/afwBaP4LtXLq\nhyUecQsv+OJgAXDmmMoWjmqqKVhLSSHStZwH2zrgOazrMcekLODEb6BBrtORSJRQUnC5SvtL07+D\n384NSyziJpnmz0Fg2V+h22tOBuMo1RSspaQQ6TJmwW8a7yimLbgNTv9viWG1RapPScHlKuwvrXXI\ndB9t6BW2eMQtvIG7W0+DvHRo+7lj0ThJNQVrOZkUsoHFwEJgvoNxRK7mv8CuE+FAitORiNMW3AZn\navRUqTknk4IP0zHaFdDQnuWosL80XZfejF2ZpSd/vcL8SGgYewNgqaZgLae7j2L3jBsrqMgsRY4c\nB0sGQpcJTkciEc7pPYXpwE/AjQ7G4Wrl9pd6CqH1HCWFmOU9dtbC66HLGzH3U0s1BWs5OcxFL2AL\n0BSYBqwAik/NHDJkCBkZGQAkJyfTpUuX4t3EojdBrE77fL9Bo3GQ3wL2NQW8HDmST4DX/zezkulQ\nly+aF+r6VV0+1Pisej63xxfK82Ud+3huJhxIhlQgt/znc/r9a/V0VlaWq+IJ57TX62X8+PEAxd+X\nNeWW3xSjgALgOf+0rtFcjscff5yHHz6Ar0cTaLwSvjTFxaSkbuzZs5CIvPawrtFs3Ta6vwSthsFH\nukZzLIpryIhJAAANcUlEQVTkazQnAIn++/WBPsASh2KJTOmz1HUkx1oyCNoCx+1yOhKJUE4lhVRM\nV1EWMA/4ApjqUCyuFqy/1IfPDIKmpBDDvMFn728Ma4COk8MZjKNUU7CWUzWF9UAXh5478qVug/2N\nzHj6ImUtBM4fBz/d6nQkEoGcPiRVKhH0GOwTsmHd+eEORVwls/yH1gH1t0Kz2OiR1XkK1lJSiEQn\nrIf1SgpSDh+w6FroMt7pSCQCKSm4XNn+0kJfIbTeBNmZjsQjbuGt+OGsIdD5bYg7HI5gHKWagrWU\nFCLMZjbDrmTYpyutSQV+P9ncTv7K6UgkwigpuFzZ/tK1vrWwPsORWMRNMitfZOFQc4ZzlFNNwVpK\nChFmnW+dkoKEZvlVcMK3kLDd6UgkgigpuFzJ/tJ9h/eRQw781tq5gMQlvJUvcjAJVvaDzu/YHo2T\nVFOwlpJCBJmzYQ5ppOE5XMfpUCRSZA3RUUhSJUoKLleyv3T6uum08bRxLhhxkczQFsvOhLp5kLbQ\nzmAcpZqCtZQUIsjXa7/mZM/JTochkcQXB4uu096ChExJweWK+ks379nMpj2baEUrZwMSl/CGvmjW\nddBpItSyLRhHqaZgLSWFCPHVmq/oc2If4jz6l0kV7T4BtnU0o6eKVELfMC5X1F/61Zqv6HtSX2eD\nERfJrNriWUOidghK1RSspaQQAQ4XHmbGuhn8+cQ/Ox2KRKrl/aE15BbkOh2JuJySgst5vV5+2PgD\nJzU6idQGqU6HI67hrdrih+vDCnh78du2ROMk1RSspaQQAaasnsJfTv6L02FIpFsIb2S9oUtySoWU\nFFwuMzOTKWumqJ4gZWRWfZUNcPDIQX7K+cnyaJykmoK1lBRcbvXO1ezYt4MerXo4HYpEgSFdhvBG\nVvQPkifVp6Tgcs9OfJbL2l2mQ1GlDG+11rr2tGt5d9m7HDhywNpwHKSagrX0TeNyszfM5opTrnA6\nDIkSrRu2plvzbny64lOnQxGXUlJwsc17NpPbJJfMjEynQxHXyaz2mkO7DGX8ovGWReI01RSspaTg\nYp+s+ISL215M7Vq1nQ5Foshl7S9j3qZ5bN6z2elQxIWUFFzsoxUfcfIeDYAnwXirvWZC7QT+2uGv\njFs4zrpwHKSagrWUFFwqJz+HhVsW0r1ld6dDkSh0+5m388pPr3Co8JDToYjLKCm41KQlk7i8/eX8\n+U8a2kKCyazR2p1SO9G+SXs+XP6hNeE4SDUFaykpuNQ7S97hms7XOB2GRLF/9PgHL85/0ekwxGWU\nFFxo2bZlbNu7jd4ZvdVfKuXw1ngLF7e9mNyCXOZvnl/zcBykz4i1lBRc6K3FbzGo0yCdsCa2qhVX\nizvOvIOX5r/kdCjiIvrWcZlDhYd4I+sNbuh6A6D+UilPpiVbub7r9UxZPYUNeRss2Z4T9BmxlpKC\ny3z060d0bNaRdk3aOR2KxICUein8vevf+decfzkdiriEkoLLvPLTK9xy+i3F0+ovleC8lm1peM/h\nvLPknYi9AI8+I9ZSUnCR5duXs2LHCi5tf6nToUgMSW2QyuDOg3nuh+ecDkVcQEnBRZ794VluP/N2\n6tSqUzxP/aUSXKalW7un1z2MWziO7Xu3W7rdcNBnxFpKCi6xMW8jn6z4hNu73+50KBKDWiW1YlCn\nQTz+3eNOhyIOU1Jwied/fJ6hXYbSqF6jUvPVXyrBeS3f4qjeo3hnyTus3rna8m3bSZ8RaykpuEBu\nQS4TFk3grp53OR2KxLCm9Ztyz9n3cN+M+5wORRykpOACj3gfYWiXobRKanXMY+ovleAybdnqsB7D\n+DnnZ2aun2nL9u2gz4i1lBQctmLHCj749QMeOOcBp0MRoV7terzY90Vu/uJm9h/e73Q44gAlBQf5\nfD6GfzOckb1GHlNLKKL+UgnOa9uW+7XrR9e0rjw661HbnsNK+oxYS0nBQZOXTmbTnk0M6zHM6VBE\nSnmx74u8kfUG32/43ulQJMyUFBySW5DL8KnDea3fa6XOSyhL/aUSXKatW09rkMa4fuMY9OEgdu7b\naetz1ZQ+I9ZSUnBA4dFCrvnoGm7sdqOurCaudVHbi/hrh78y6KNBHC487HQ4EiZKCg54aOZDFPoK\nGdV7VKXLqr9UgvOG5Vme+tNTxMfFc9uXt+Hz+cLynFWlz4i1lBTCbOyCsXz464e81/89asXVcjoc\nkQrFx8Xzbv93+SX3F0ZOH+naxCDWUVIIo5fnv8wTs5/gq6u/omn9piGto/5SCS4zbM/UoE4Dpl4z\nlZnrZ3LHlDsoPFoYtucOhT4j1lJSCIMjR4/wwIwHeGHeC8weOpsTG53odEgiVdI4oTEzrp3Byp0r\nufCdC9mxb4fTIYlNnEoKFwIrgNXASIdiCIu1v6/ljxP+yIKcBXw/9HtOSDmhSuurv1SC84b9GRse\n15Cvr/maM5qfwWmvnMb7y953RXeSPiPWciIp1AJexiSGU4GBwCkOxGGr3IJc7p12L91f606/tv34\n5ppvSG2QWuXtZGVl2RCdRD5n3hfxcfE8+acnebf/u4yeNZrMCZlMXzfd0eSgz4i14h14zu7AGiDb\nPz0ZuBT41YFYLLXv8D6mrZ3Ge8vfY8rqKQzoMIAlty6hRWKLam9z9+7dFkYo0cPZ98UfWv+BRbcs\nYtKSSdwx5Q7i4+IZ3Hkwl7W/jLaN2+LxeMIWiz4j1nIiKbQENpaY3gT0cCCOajnqO0rBoQJy8nP4\nbfdv/Jb3G0u3LWVBzgKWbF3CmS3P5PL2l/Ny35dJqZfidLgitomPi2fwaYO5uvPVzNkwh7cXv02f\nt/twuPAwvVr3okPTDpza9FRaN2xNWoM0UuunUq92PafDlko4kRRC2s+8aOJFZmGfDx++4r/VnWee\n2FeteQcLD7Ln4B7yD+az9/Be6sXXo3lic9IbppPeMJ1Tmp7CladcSbfm3Uism2hhU0F2dnap6bi4\nOOrUeZe6dReVmn/gwFpLn1fcLtvpAIrFeeI4J/0czkk/B5/Px/rd6/lx048s376cyUsnszl/M7kF\nueQW5BIfF0/92vVJqJ1QfKtTqw5xnrgKbxXteSyauYgFbRccM99D6HsrQ7sM5cpTr6zW64824dvH\nCzgLGI2pKQDcDxwFni6xzBpAh+iIiFTNWuAkp4OoqnhM4BlAHUzFLOoKzSIiErq+wErMHsH9Dsci\nIiIiIiJu0giYBqwCpgLJ5SxX3oluozFHLi303y48Zk33C+Ukvhf9jy8CulZx3UhSk7bIBhZj3gfz\n7QsxbCpri/bAXOAAcHcV1400NWmLbGLrfXE15rOxGJgDdK7Cuq7wDHCv//5I4Kkgy9TCdDFlALUp\nXX8YBQy3N0RbVfTaivwFmOK/3wP4sQrrRpKatAXAesyPjGgQSls0Bc4AHqf0F2Esvi/KawuIvfdF\nT6Ch//6FVPP7wsmxj/oBE/z3JwCXBVmm5Iluhwmc6FbEiaOnrFLZa4PSbTQPszeVFuK6kaS6bVHy\nFPFIfi+UFEpbbAd+8j9e1XUjSU3aokgsvS/mAnn++/OAVlVYt5iTSSEV2Oq/v5XSH/AiwU50a1li\n+k7M7tI4yu9+cqvKXltFy7QIYd1IUpO2AHPuy3TMl8ONNsUYLqG0hR3rulFNX08svy9uILBnXaV1\n7T55bRrml21ZD5aZ9hH8pLaKTnQbCxRdWfwx4DlMQ0SKUAeLiZZfOhWpaVv8AcjBdCVMw/SdzrYg\nLifUZBAh50ens1ZNX08vYAux9774I3A95vVXdV3bk8IFFTy2FZMwcoHmwLYgy2wGji8xfTwmy1Fm\n+deAz6sfpiMqem3lLdPKv0ztENaNJNVti83++zn+v9uBjzG7y5H64Q+lLexY141q+nq2+P/G0vui\nM/Aqpqawq4rrOu4ZAlXw+wheaK7oRLfmJZa7C5hoS5T2CeUkvpLF1bMIFI6i7QTAmrRFAlA0tkh9\nzFEXfWyM1W5V+d+OpnRxNRbfF0VGU7otYvF90RpTOzirGuu6QiNMf1/ZQ1JbAF+WWK68E93exBx6\ntQj4hOA1CbcL9tpu9t+KvOx/fBHQrZJ1I1l126IN5k2eBSwlNtoiDdNHnIf5NbgBaFDBupGsum0R\ni++L14CdBA7Tn1/JuiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJivaPAWyWm4zFnwEbaGfIilnByQDwR\nN9gLdACO809fgBkCINrGERIJiZKCiBk+4yL//YHAJAKD79UHXscMRfwLZghvMEMGfAf87L/19M/P\nBLzA+8CvwNt2Bi4iItbKBzphvsTrYoYH6E2g++j/Ya5oBWYolpWYcXXq+ZcHOBlY4L+fCezGDNfi\nAX4gMFqliOvZPUqqSCRYgvnlP5DS426BGUTtEmCEf7ouZpTJXMxYTKcBhZjEUGQ+gZFbs/zbnmN9\n2CLWU1IQMT4DnsXsJTQt89gVmGvbljQaMzTzYMzlDg+UeOxgifuF6HMmEUQ1BRHjdcwX/bIy878B\nhpWY7ur/m4TZWwC4FpMYRCKekoLEuqKjjDZjuoOK5hXNfwxzUaPFmCGYH/HPHwNch+keagcUBNlm\nedMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiseP/A00v7K8EYi9RAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Plot a histogram and kernel density estimate for the scattering rates\n", "scatter['mean'].plot(kind='hist', bins=25)\n", diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 4ce764182..a0055b8b1 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -369,7 +369,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMTE6MTY6NTQtMDQ6MDAUwu7yAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDExOjE2OjU0LTA0OjAwZZ9WTgAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDNUMTM6MDI6MDItMDQ6MDCXyx9dAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTAz\nVDEzOjAyOjAyLTA0OjAw5pan4QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -563,7 +563,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "rm: cannot remove ‘statepoint.*’: No such file or directory\n", "\n", " .d88888b. 888b d888 .d8888b.\n", " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", @@ -581,7 +580,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 11:16:55\n", + " Date/Time: 2015-10-03 13:02:02\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -637,20 +636,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 6.8600E-01 seconds\n", - " Reading cross sections = 1.5400E-01 seconds\n", - " Total time in simulation = 2.4023E+01 seconds\n", - " Time in transport only = 2.3994E+01 seconds\n", - " Time in inactive batches = 3.1010E+00 seconds\n", - " Time in active batches = 2.0922E+01 seconds\n", + " Total time for initialization = 4.1600E-01 seconds\n", + " Reading cross sections = 9.1000E-02 seconds\n", + " Total time in simulation = 1.4793E+01 seconds\n", + " Time in transport only = 1.4785E+01 seconds\n", + " Time in inactive batches = 2.1450E+00 seconds\n", + " Time in active batches = 1.2648E+01 seconds\n", " Time synchronizing fission bank = 2.0000E-03 seconds\n", " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 2.4724E+01 seconds\n", - " Calculation Rate (inactive) = 4030.96 neutrons/second\n", - " Calculation Rate (active) = 1792.37 neutrons/second\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 1.5219E+01 seconds\n", + " Calculation Rate (inactive) = 5827.51 neutrons/second\n", + " Calculation Rate (active) = 2964.90 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -722,20 +721,7 @@ "collapsed": false, "scrolled": true }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "10003", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Load the summary file and link with statepoint\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0msu\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSummary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'summary.h5'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlink_with_summary\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msu\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/statepoint.pyc\u001b[0m in \u001b[0;36mlink_with_summary\u001b[1;34m(self, summary)\u001b[0m\n\u001b[0;32m 610\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mtally_id\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtally\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 611\u001b[0m \u001b[1;31m# Get the Tally name from the summary file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 612\u001b[1;33m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msummary\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtallies\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mtally_id\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 613\u001b[0m \u001b[0mtally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwith_summary\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mKeyError\u001b[0m: 10003" - ] - } - ], + "outputs": [], "source": [ "# Load the summary file and link with statepoint\n", "su = Summary('summary.h5')\n", @@ -753,11 +739,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "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", + "
nuclidescoremeanstd. dev.
0total(nu-fission / absorption)1.0463530.00935
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "0 total (nu-fission / absorption) 1.046353 0.00935" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute k-infinity using tally arithmetic\n", "fiss_rate = sp.get_tally(name='fiss. rate')\n", @@ -777,11 +799,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)totalabsorption0.958730.00774
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total absorption 0.95873 0.00774" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute resonance escape probability using tally arithmetic\n", "therm_abs_rate = sp.get_tally(name='therm. abs. rate')\n", @@ -799,11 +859,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "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", + "
nuclidescoremeanstd. dev.
0totalnu-fission1.0916220.011163
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "0 total nu-fission 1.091622 0.011163" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute fast fission factor factor using tally arithmetic\n", "therm_fiss_rate = sp.get_tally(name='therm. fiss. rate')\n", @@ -822,11 +918,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "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", + "
energy [MeV]cellnuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)10000totalabsorption0.8020120.006609
\n", + "
" + ], + "text/plain": [ + " energy [MeV] cell nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) 10000 total absorption 0.802012 0.006609" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute thermal flux utilization factor using tally arithmetic\n", "fuel_therm_abs_rate = sp.get_tally(name='fuel therm. abs. rate')\n", @@ -843,11 +979,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(nu-fission / absorption)1.2466040.011825
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total (nu-fission / absorption) 1.246604 0.011825" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute neutrons produced per absorption (eta) using tally arithmetic\n", "eta = therm_fiss_rate / fuel_therm_abs_rate\n", @@ -863,11 +1037,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(((absorption * nu-fission) * absorption) * (n...1.0463530.01894
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide \\\n", + "0 (0.0e+00 - 6.2e-01) total \n", + "\n", + " score mean std. dev. \n", + "0 (((absorption * nu-fission) * absorption) * (n... 1.046353 0.01894 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "keff = res_esc * fast_fiss * therm_util * eta\n", "keff.get_pandas_dataframe()" @@ -884,7 +1099,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false, "scrolled": true @@ -900,11 +1115,131 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)(U-238 / total)(nu-fission / flux)6.641746e-076.859257e-09
110000(0.0e+00 - 6.3e-07)(U-238 / total)(scatter / flux)2.099861e-011.966887e-03
210000(0.0e+00 - 6.3e-07)(U-235 / total)(nu-fission / flux)3.556665e-013.717881e-03
310000(0.0e+00 - 6.3e-07)(U-235 / total)(scatter / flux)5.554650e-035.218094e-05
410000(6.3e-07 - 2.0e+01)(U-238 / total)(nu-fission / flux)7.165057e-035.625590e-05
510000(6.3e-07 - 2.0e+01)(U-238 / total)(scatter / flux)2.276535e-018.544314e-04
610000(6.3e-07 - 2.0e+01)(U-235 / total)(nu-fission / flux)8.089493e-035.080374e-05
710000(6.3e-07 - 2.0e+01)(U-235 / total)(scatter / flux)3.370111e-031.361116e-05
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score \\\n", + "0 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (nu-fission / flux) \n", + "1 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (scatter / flux) \n", + "2 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (nu-fission / flux) \n", + "3 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (scatter / flux) \n", + "4 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (nu-fission / flux) \n", + "5 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (scatter / flux) \n", + "6 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (nu-fission / flux) \n", + "7 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (scatter / flux) \n", + "\n", + " mean std. dev. \n", + "0 6.641746e-07 6.859257e-09 \n", + "1 2.099861e-01 1.966887e-03 \n", + "2 3.556665e-01 3.717881e-03 \n", + "3 5.554650e-03 5.218094e-05 \n", + "4 7.165057e-03 5.625590e-05 \n", + "5 2.276535e-01 8.544314e-04 \n", + "6 8.089493e-03 5.080374e-05 \n", + "7 3.370111e-03 1.361116e-05 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "fuel_xs = fuel_rxn_rates / flux\n", "fuel_xs.get_pandas_dataframe()" @@ -919,11 +1254,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 6.64174599e-07]\n", + " [ 3.55666541e-01]]\n", + "\n", + " [[ 7.16505734e-03]\n", + " [ 8.08949336e-03]]]\n" + ] + } + ], "source": [ "# Show how to use Tally.get_values(...) with a CrossScore\n", "nu_fiss_xs = fuel_xs.get_values(scores=['(nu-fission / flux)'])\n", @@ -939,11 +1286,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.00555465]]\n", + "\n", + " [[ 0.00337011]]]\n" + ] + } + ], "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", @@ -953,11 +1310,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.22765348]\n", + " [ 0.00337011]]]\n" + ] + } + ], "source": [ "# Show how to use Tally.get_values(...) with a CrossFilter and CrossScore\n", "fast_scatter_xs = fuel_xs.get_values(filters=['energy'], \n", @@ -975,11 +1341,81 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)U-238nu-fission0.0000021.284890e-08
110000(0.0e+00 - 6.3e-07)U-235nu-fission0.8679827.022256e-03
210000(6.3e-07 - 2.0e+01)U-238nu-fission0.0828016.087096e-04
310000(6.3e-07 - 2.0e+01)U-235nu-fission0.0934845.275039e-04
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10000 (0.0e+00 - 6.3e-07) U-238 nu-fission 0.000002 1.284890e-08\n", + "1 10000 (0.0e+00 - 6.3e-07) U-235 nu-fission 0.867982 7.022256e-03\n", + "2 10000 (6.3e-07 - 2.0e+01) U-238 nu-fission 0.082801 6.087096e-04\n", + "3 10000 (6.3e-07 - 2.0e+01) U-235 nu-fission 0.093484 5.275039e-04" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# \"Slice\" the nu-fission data into a new derived Tally\n", "nu_fission_rates = fuel_rxn_rates.get_slice(scores=['nu-fission'])\n", @@ -988,11 +1424,131 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010002(1.0e-08 - 1.1e-07)H-1scatter4.6205250.038249
110002(1.1e-07 - 1.2e-06)H-1scatter2.0368410.013203
210002(1.2e-06 - 1.3e-05)H-1scatter1.6599160.010107
310002(1.3e-05 - 1.4e-04)H-1scatter1.8615460.013328
410002(1.4e-04 - 1.5e-03)H-1scatter2.0496640.008215
510002(1.5e-03 - 1.6e-02)H-1scatter2.1621570.010245
610002(1.6e-02 - 1.7e-01)H-1scatter2.2244960.013796
710002(1.7e-01 - 1.9e+00)H-1scatter1.9975850.009161
810002(1.9e+00 - 2.0e+01)H-1scatter0.3734720.003922
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10002 (1.0e-08 - 1.1e-07) H-1 scatter 4.620525 0.038249\n", + "1 10002 (1.1e-07 - 1.2e-06) H-1 scatter 2.036841 0.013203\n", + "2 10002 (1.2e-06 - 1.3e-05) H-1 scatter 1.659916 0.010107\n", + "3 10002 (1.3e-05 - 1.4e-04) H-1 scatter 1.861546 0.013328\n", + "4 10002 (1.4e-04 - 1.5e-03) H-1 scatter 2.049664 0.008215\n", + "5 10002 (1.5e-03 - 1.6e-02) H-1 scatter 2.162157 0.010245\n", + "6 10002 (1.6e-02 - 1.7e-01) H-1 scatter 2.224496 0.013796\n", + "7 10002 (1.7e-01 - 1.9e+00) H-1 scatter 1.997585 0.009161\n", + "8 10002 (1.9e+00 - 2.0e+01) H-1 scatter 0.373472 0.003922" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "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", From bcf6428a57c885ff558625cdd3501d72687aecb3 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 13:09:55 -0400 Subject: [PATCH 075/130] Removed Excel file created by MGXS IPython Notebook from git tracking --- .gitignore | 1 + .../pythonapi/examples/mgxs/transport-xs.xls | Bin 5632 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 docs/source/pythonapi/examples/mgxs/transport-xs.xls diff --git a/.gitignore b/.gitignore index 7c6e6d9c2..08f7bd2e4 100644 --- a/.gitignore +++ b/.gitignore @@ -68,4 +68,5 @@ data/nndc docs/source/pythonapi/examples/*.xml docs/source/pythonapi/examples/*.png docs/source/pythonapi/examples/*.xls +docs/source/pythonapi/examples/mgxs docs/source/pythonapi/examples/tracks \ No newline at end of file diff --git a/docs/source/pythonapi/examples/mgxs/transport-xs.xls b/docs/source/pythonapi/examples/mgxs/transport-xs.xls deleted file mode 100644 index 86a8cee39962fec9c37bb88dddedbafc034ce043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5632 zcmeI0YiJZ#6vzK}cJ@`0m>rXd5yCW}@r59zAhl-VqfPrEG0_hZ3FvADn!4`lb|YvZ zCdT;5R>4nNL8N{uz7c$oh>Aq~ASgZv2ufn1RivdY3L>W4bIxSeo&6BD6hf6b%bvOC z+H8-)4+{#UM=@r#RE`%u?~^vWrFIs@`AFoRRhL(uP38XQtru(hf41gO`BdZR zj*3&m)=|__EHLZ_jkpG&ABOLv(IH4IkxU$>%u;= zXvW3*Umpuw7xt&WpMF$+@*81u{tDUbbJW>V$5$6`{Y%&pVOK@# z+P4n%S@oKM^St2Dz-nBao#R^m)z5&R0Y3wN2K)^88JLs|@arW%mHBnedDU|M1K`&Q z{$FQ|zI^rN{mj5Br0A1@iO-OvYZ}{W=8Kmq1eKc^UQ5M@`+p&~ZKLREY{CW^$EISs md)m;?wOo82ho^EP!}%RIQHx^h{&oEP`!6=g1nvG){C@x;tuRIa From 81c00627f984e767193da01f2497da7e1ff094e3 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 3 Oct 2015 14:53:55 -0400 Subject: [PATCH 076/130] Fixed minor issues with OpenCG surface coefficient properties in compatibility module --- openmc/opencg_compatible.py | 2 +- openmc/surface.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openmc/opencg_compatible.py b/openmc/opencg_compatible.py index a6f90818f..1cdf8e875 100644 --- a/openmc/opencg_compatible.py +++ b/openmc/opencg_compatible.py @@ -220,7 +220,7 @@ def get_opencg_surface(openmc_surface): opencg_surface = opencg.Plane(surface_id, name, boundary, A, B, C, D) elif openmc_surface.type == 'x-plane': - x0 = openmc_surface.y0 + x0 = openmc_surface.x0 opencg_surface = opencg.XPlane(surface_id, name, boundary, x0) elif openmc_surface.type == 'y-plane': diff --git a/openmc/surface.py b/openmc/surface.py index 164bbd09b..063787ce3 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -275,7 +275,7 @@ class XPlane(Plane): @property def x0(self): - return self.coeff['x0'] + return self.coeffs['x0'] @x0.setter def x0(self, x0): From 23535afa1c69644bb299bde18a094c3b99d53ae0 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 4 Oct 2015 16:43:42 -0400 Subject: [PATCH 077/130] Made NuScatterXS tallies tracklength per comments from @nelsonag --- openmc/mgxs/mgxs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 85b08362a..a41dcb5b2 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -331,7 +331,7 @@ class MultiGroupXS(object): ---------- scores : Iterable of str Scores for each tally - filters : Iterable of tuple of Filter + all_filters : Iterable of tuple of Filter Tuples of non-spatial domain filters for each tally keys : Iterable of str Key string used to store each tally in the tallies dictionary @@ -1459,7 +1459,7 @@ class NuScatterXS(MultiGroupXS): # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter'] - estimator = 'analog' + estimator = 'tracklength' keys = scores # Create the non-domain specific Filters for the Tallies From 54f40eed32b66794c23aa1e5655f781852bcdf4a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 8 Oct 2015 14:23:19 -0400 Subject: [PATCH 078/130] Moved Python builtin routines to beginning of each Python API class --- .../examples/multi-group-cross-sections.ipynb | 651 ++++++++++-------- openmc/cross.py | 94 ++- openmc/element.py | 15 +- openmc/filter.py | 16 +- openmc/material.py | 64 +- openmc/nuclide.py | 19 +- openmc/region.py | 18 +- openmc/surface.py | 32 +- openmc/tallies.py | 52 +- openmc/trigger.py | 14 +- openmc/universe.py | 192 +++--- 11 files changed, 609 insertions(+), 558 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index e7820bca8..5e1533781 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -150,9 +150,20 @@ "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Instantiate a Cell\n", "cell = openmc.Cell(cell_id=1, name='cell')\n", @@ -451,8 +462,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 12:56:30\n", + " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", + " Date/Time: 2015-10-08 14:20:33\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -465,11 +476,11 @@ " Reading materials XML file...\n", " Reading tallies XML file...\n", " Building neighboring cells lists for each surface...\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: 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", " Initializing source particles...\n", "\n", " ===========================================================================\n", @@ -478,56 +489,56 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.14249 \n", - " 2/1 1.18016 \n", - " 3/1 1.16083 \n", - " 4/1 1.09124 \n", - " 5/1 1.15214 \n", - " 6/1 1.13453 \n", - " 7/1 1.15552 \n", - " 8/1 1.18149 \n", - " 9/1 1.10404 \n", - " 10/1 1.15703 \n", - " 11/1 1.21224 \n", - " 12/1 1.14147 1.17686 +/- 0.03538\n", - " 13/1 1.12601 1.15991 +/- 0.02655\n", - " 14/1 1.11972 1.14986 +/- 0.02129\n", - " 15/1 1.15683 1.15125 +/- 0.01655\n", - " 16/1 1.15236 1.15144 +/- 0.01351\n", - " 17/1 1.17833 1.15528 +/- 0.01205\n", - " 18/1 1.13229 1.15241 +/- 0.01082\n", - " 19/1 1.22394 1.16035 +/- 0.01242\n", - " 20/1 1.15867 1.16019 +/- 0.01111\n", - " 21/1 1.13611 1.15800 +/- 0.01029\n", - " 22/1 1.14101 1.15658 +/- 0.00950\n", - " 23/1 1.20864 1.16059 +/- 0.00961\n", - " 24/1 1.13475 1.15874 +/- 0.00909\n", - " 25/1 1.10697 1.15529 +/- 0.00914\n", - " 26/1 1.20824 1.15860 +/- 0.00916\n", - " 27/1 1.16775 1.15914 +/- 0.00863\n", - " 28/1 1.15904 1.15913 +/- 0.00813\n", - " 29/1 1.16967 1.15969 +/- 0.00771\n", - " 30/1 1.12574 1.15799 +/- 0.00751\n", - " 31/1 1.16177 1.15817 +/- 0.00715\n", - " 32/1 1.18082 1.15920 +/- 0.00689\n", - " 33/1 1.19549 1.16078 +/- 0.00677\n", - " 34/1 1.18508 1.16179 +/- 0.00656\n", - " 35/1 1.17697 1.16240 +/- 0.00632\n", - " 36/1 1.16342 1.16244 +/- 0.00607\n", - " 37/1 1.17400 1.16286 +/- 0.00586\n", - " 38/1 1.19281 1.16393 +/- 0.00575\n", - " 39/1 1.15669 1.16368 +/- 0.00555\n", - " 40/1 1.17987 1.16422 +/- 0.00539\n", - " 41/1 1.14129 1.16348 +/- 0.00527\n", - " 42/1 1.18323 1.16410 +/- 0.00514\n", - " 43/1 1.13885 1.16334 +/- 0.00504\n", - " 44/1 1.17943 1.16381 +/- 0.00491\n", - " 45/1 1.20014 1.16485 +/- 0.00488\n", - " 46/1 1.16056 1.16473 +/- 0.00474\n", - " 47/1 1.20077 1.16570 +/- 0.00471\n", - " 48/1 1.15469 1.16541 +/- 0.00460\n", - " 49/1 1.18862 1.16601 +/- 0.00452\n", - " 50/1 1.18755 1.16655 +/- 0.00444\n", + " 1/1 1.19804 \n", + " 2/1 1.12945 \n", + " 3/1 1.15573 \n", + " 4/1 1.13929 \n", + " 5/1 1.16300 \n", + " 6/1 1.22117 \n", + " 7/1 1.19012 \n", + " 8/1 1.11299 \n", + " 9/1 1.16066 \n", + " 10/1 1.12566 \n", + " 11/1 1.20854 \n", + " 12/1 1.14691 1.17773 +/- 0.03082\n", + " 13/1 1.17204 1.17583 +/- 0.01789\n", + " 14/1 1.14148 1.16724 +/- 0.01529\n", + " 15/1 1.17272 1.16834 +/- 0.01189\n", + " 16/1 1.18575 1.17124 +/- 0.01014\n", + " 17/1 1.20498 1.17606 +/- 0.00983\n", + " 18/1 1.14754 1.17249 +/- 0.00923\n", + " 19/1 1.18141 1.17348 +/- 0.00820\n", + " 20/1 1.15074 1.17121 +/- 0.00768\n", + " 21/1 1.15914 1.17011 +/- 0.00703\n", + " 22/1 1.14586 1.16809 +/- 0.00673\n", + " 23/1 1.18999 1.16978 +/- 0.00642\n", + " 24/1 1.15101 1.16844 +/- 0.00609\n", + " 25/1 1.13791 1.16640 +/- 0.00602\n", + " 26/1 1.19791 1.16837 +/- 0.00597\n", + " 27/1 1.19818 1.17012 +/- 0.00587\n", + " 28/1 1.14160 1.16854 +/- 0.00576\n", + " 29/1 1.11487 1.16571 +/- 0.00614\n", + " 30/1 1.17538 1.16620 +/- 0.00584\n", + " 31/1 1.20210 1.16791 +/- 0.00581\n", + " 32/1 1.20078 1.16940 +/- 0.00574\n", + " 33/1 1.14624 1.16839 +/- 0.00558\n", + " 34/1 1.14618 1.16747 +/- 0.00542\n", + " 35/1 1.16866 1.16752 +/- 0.00520\n", + " 36/1 1.18565 1.16821 +/- 0.00504\n", + " 37/1 1.16824 1.16821 +/- 0.00485\n", + " 38/1 1.18299 1.16874 +/- 0.00471\n", + " 39/1 1.21418 1.17031 +/- 0.00480\n", + " 40/1 1.11167 1.16835 +/- 0.00504\n", + " 41/1 1.11545 1.16665 +/- 0.00516\n", + " 42/1 1.11114 1.16491 +/- 0.00529\n", + " 43/1 1.14227 1.16423 +/- 0.00517\n", + " 44/1 1.14104 1.16355 +/- 0.00506\n", + " 45/1 1.16756 1.16366 +/- 0.00492\n", + " 46/1 1.13065 1.16274 +/- 0.00487\n", + " 47/1 1.11251 1.16139 +/- 0.00492\n", + " 48/1 1.14731 1.16101 +/- 0.00481\n", + " 49/1 1.16691 1.16117 +/- 0.00469\n", + " 50/1 1.19679 1.16206 +/- 0.00465\n", " Creating state point statepoint.50.h5...\n", "\n", " ===========================================================================\n", @@ -537,27 +548,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 6.4800E-01 seconds\n", - " Reading cross sections = 1.5500E-01 seconds\n", - " Total time in simulation = 1.6951E+01 seconds\n", - " Time in transport only = 1.6927E+01 seconds\n", - " Time in inactive batches = 3.1560E+00 seconds\n", - " Time in active batches = 1.3795E+01 seconds\n", - " Time synchronizing fission bank = 7.0000E-03 seconds\n", - " Sampling source sites = 4.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 = 3.0000E-03 seconds\n", - " Total time elapsed = 1.7614E+01 seconds\n", - " Calculation Rate (inactive) = 7921.42 neutrons/second\n", - " Calculation Rate (active) = 7249.00 neutrons/second\n", + " Total time for initialization = 4.5400E-01 seconds\n", + " Reading cross sections = 1.0100E-01 seconds\n", + " Total time in simulation = 1.4106E+01 seconds\n", + " Time in transport only = 1.4092E+01 seconds\n", + " Time in inactive batches = 2.1000E+00 seconds\n", + " Time in active batches = 1.2006E+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 = 3.0000E-03 seconds\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.4572E+01 seconds\n", + " Calculation Rate (inactive) = 11904.8 neutrons/second\n", + " Calculation Rate (active) = 8329.17 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.16600 +/- 0.00432\n", - " k-effective (Track-length) = 1.16655 +/- 0.00444\n", - " k-effective (Absorption) = 1.16281 +/- 0.00314\n", - " Combined k-effective = 1.16367 +/- 0.00307\n", + " k-effective (Collision) = 1.16131 +/- 0.00453\n", + " k-effective (Track-length) = 1.16206 +/- 0.00465\n", + " k-effective (Absorption) = 1.16096 +/- 0.00364\n", + " Combined k-effective = 1.16120 +/- 0.00325\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -665,7 +676,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1485: RuntimeWarning: invalid value encountered in divide\n" + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1486: RuntimeWarning: invalid value encountered in divide\n" ] } ], @@ -713,14 +724,14 @@ "\tDomain Type =\tcell\n", "\tDomain ID =\t1\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.11e-02 +/- 5.93e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t6.60e-04 +/- 3.04e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t9.00e-03 +/- 4.10e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t1.44e-02 +/- 6.58e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t4.72e-02 +/- 9.80e-01%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t7.29e-02 +/- 8.59e-01%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t1.11e-01 +/- 7.92e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t2.39e-01 +/- 6.90e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.11e-02 +/- 7.69e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t6.59e-04 +/- 2.97e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t8.95e-03 +/- 5.12e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t1.45e-02 +/- 7.10e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t4.71e-02 +/- 1.02e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t7.29e-02 +/- 8.86e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t1.11e-01 +/- 6.67e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t2.38e-01 +/- 7.71e-01%\n", "\n", "\n", "\n" @@ -768,8 +779,8 @@ " 1\n", " 1\n", " total\n", - " 0.077460\n", - " 0.000890\n", + " 0.076970\n", + " 0.001012\n", " \n", " \n", " 62\n", @@ -777,8 +788,8 @@ " 1\n", " 2\n", " total\n", - " 0.087276\n", - " 0.000331\n", + " 0.087876\n", + " 0.000344\n", " \n", " \n", " 61\n", @@ -786,8 +797,8 @@ " 1\n", " 3\n", " total\n", - " 0.000450\n", - " 0.000026\n", + " 0.000418\n", + " 0.000023\n", " \n", " \n", " 60\n", @@ -849,8 +860,8 @@ " 2\n", " 2\n", " total\n", - " 0.266651\n", - " 0.001340\n", + " 0.266499\n", + " 0.001265\n", " \n", " \n", "\n", @@ -858,16 +869,16 @@ ], "text/plain": [ " cell group in group out nuclide mean std. dev.\n", - "63 1 1 1 total 0.077460 0.000890\n", - "62 1 1 2 total 0.087276 0.000331\n", - "61 1 1 3 total 0.000450 0.000026\n", + "63 1 1 1 total 0.076970 0.001012\n", + "62 1 1 2 total 0.087876 0.000344\n", + "61 1 1 3 total 0.000418 0.000023\n", "60 1 1 4 total 0.000000 0.000000\n", "59 1 1 5 total 0.000000 0.000000\n", "58 1 1 6 total 0.000000 0.000000\n", "57 1 1 7 total 0.000000 0.000000\n", "56 1 1 8 total 0.000000 0.000000\n", "55 1 2 1 total 0.000000 0.000000\n", - "54 1 2 2 total 0.266651 0.001340" + "54 1 2 2 total 0.266499 0.001265" ] }, "execution_count": 21, @@ -1020,133 +1031,133 @@ "[ NORMAL ] Ray tracing for track segmentation...\n", "[ NORMAL ] Dumping tracks to file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.685180\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.785704\tres = 3.148E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.750352\tres = 1.467E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.729115\tres = 4.499E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.696059\tres = 2.830E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.663970\tres = 4.534E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.633141\tres = 4.610E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.605167\tres = 4.643E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.580592\tres = 4.418E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.559758\tres = 4.061E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.542846\tres = 3.588E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.529901\tres = 3.021E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.520893\tres = 2.385E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.515699\tres = 1.700E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.514152\tres = 9.971E-03\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.516033\tres = 2.999E-03\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.521086\tres = 3.657E-03\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.529034\tres = 9.792E-03\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.539585\tres = 1.525E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.552436\tres = 1.994E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.567286\tres = 2.382E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.583843\tres = 2.688E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.601819\tres = 2.918E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.620946\tres = 3.079E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.640969\tres = 3.178E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.661654\tres = 3.225E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.682785\tres = 3.227E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.704168\tres = 3.194E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.725628\tres = 3.132E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.747011\tres = 3.048E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.768182\tres = 2.947E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.789024\tres = 2.834E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.809439\tres = 2.713E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.829342\tres = 2.587E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.848666\tres = 2.459E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.867356\tres = 2.330E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.885370\tres = 2.202E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.902676\tres = 2.077E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.919253\tres = 1.955E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.935087\tres = 1.836E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.950174\tres = 1.723E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.964514\tres = 1.613E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.978114\tres = 1.509E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.990987\tres = 1.410E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 1.003145\tres = 1.316E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 1.014610\tres = 1.227E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 1.025401\tres = 1.143E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 1.035542\tres = 1.064E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 1.045058\tres = 9.890E-03\n", - "[ NORMAL ] Iteration 49:\tk_eff = 1.053973\tres = 9.189E-03\n", - "[ NORMAL ] Iteration 50:\tk_eff = 1.062316\tres = 8.531E-03\n", - "[ NORMAL ] Iteration 51:\tk_eff = 1.070112\tres = 7.915E-03\n", - "[ NORMAL ] Iteration 52:\tk_eff = 1.077389\tres = 7.339E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 1.084173\tres = 6.800E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.090490\tres = 6.297E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.096368\tres = 5.827E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.101830\tres = 5.390E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.106902\tres = 4.982E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.111608\tres = 4.603E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.115969\tres = 4.251E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.120009\tres = 3.924E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.123747\tres = 3.620E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.127204\tres = 3.338E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.130399\tres = 3.076E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.133349\tres = 2.834E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.136072\tres = 2.610E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.138584\tres = 2.403E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.140899\tres = 2.211E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.143032\tres = 2.033E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.144996\tres = 1.869E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.146803\tres = 1.718E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.148466\tres = 1.579E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.149995\tres = 1.450E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.151399\tres = 1.331E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.152690\tres = 1.222E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.153875\tres = 1.121E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.154963\tres = 1.028E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.155961\tres = 9.428E-04\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.156876\tres = 8.642E-04\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.157716\tres = 7.920E-04\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.158485\tres = 7.256E-04\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.159190\tres = 6.646E-04\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.159836\tres = 6.085E-04\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.160427\tres = 5.571E-04\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.160969\tres = 5.098E-04\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.161464\tres = 4.665E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.161917\tres = 4.268E-04\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.162332\tres = 3.903E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.162711\tres = 3.570E-04\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.163058\tres = 3.264E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.163375\tres = 2.982E-04\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.163664\tres = 2.725E-04\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.163929\tres = 2.490E-04\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.164171\tres = 2.275E-04\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.164392\tres = 2.077E-04\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.164593\tres = 1.897E-04\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.164777\tres = 1.733E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.164946\tres = 1.581E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.165099\tres = 1.444E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.165239\tres = 1.317E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.165367\tres = 1.202E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.165483\tres = 1.096E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.165590\tres = 1.000E-04\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.165687\tres = 9.126E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.165775\tres = 8.326E-05\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.165856\tres = 7.590E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.165929\tres = 6.924E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.165996\tres = 6.304E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.166057\tres = 5.745E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.166113\tres = 5.243E-05\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.166164\tres = 4.776E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.166210\tres = 4.355E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.166252\tres = 3.962E-05\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.166291\tres = 3.624E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.166326\tres = 3.295E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.166358\tres = 3.003E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.166387\tres = 2.737E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.166413\tres = 2.486E-05\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.166437\tres = 2.267E-05\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.166459\tres = 2.061E-05\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.166479\tres = 1.883E-05\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.166497\tres = 1.711E-05\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.166514\tres = 1.563E-05\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.166529\tres = 1.418E-05\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.166543\tres = 1.300E-05\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.166555\tres = 1.176E-05\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.166567\tres = 1.074E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.685185\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.728847\tres = 4.513E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.695633\tres = 2.844E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.663357\tres = 4.557E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.632339\tres = 4.640E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.604187\tres = 4.676E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.579451\tres = 4.452E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.558474\tres = 4.094E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.541436\tres = 3.620E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.528380\tres = 3.051E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.519273\tres = 2.411E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.513991\tres = 1.724E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.512364\tres = 1.017E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.514171\tres = 3.165E-03\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.519155\tres = 3.527E-03\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.527038\tres = 9.693E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.537524\tres = 1.518E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.550310\tres = 1.990E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.565096\tres = 2.379E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.581585\tres = 2.687E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.599493\tres = 2.918E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.618548\tres = 3.079E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.638497\tres = 3.179E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.659105\tres = 3.225E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.680156\tres = 3.228E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.701456\tres = 3.194E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.722831\tres = 3.132E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.744127\tres = 3.047E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.765209\tres = 2.946E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.785961\tres = 2.833E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.806283\tres = 2.712E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.826093\tres = 2.586E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.845324\tres = 2.457E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.863921\tres = 2.328E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.881841\tres = 2.200E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.899055\tres = 2.074E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.915540\tres = 1.952E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.931284\tres = 1.834E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.946283\tres = 1.720E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.960536\tres = 1.610E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.974052\tres = 1.506E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.986841\tres = 1.407E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.998920\tres = 1.313E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 1.010307\tres = 1.224E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 1.021023\tres = 1.140E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 1.031091\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 1.040537\tres = 9.861E-03\n", + "[ NORMAL ] Iteration 49:\tk_eff = 1.049386\tres = 9.161E-03\n", + "[ NORMAL ] Iteration 50:\tk_eff = 1.057664\tres = 8.504E-03\n", + "[ NORMAL ] Iteration 51:\tk_eff = 1.065399\tres = 7.889E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 1.072617\tres = 7.313E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 1.079345\tres = 6.775E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.085609\tres = 6.273E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.091436\tres = 5.804E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.096851\tres = 5.367E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.101877\tres = 4.961E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.106540\tres = 4.583E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.110860\tres = 4.231E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.114861\tres = 3.905E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.118563\tres = 3.602E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.121986\tres = 3.321E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.125149\tres = 3.060E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.128069\tres = 2.819E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.130764\tres = 2.595E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.133248\tres = 2.389E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.135538\tres = 2.197E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.137648\tres = 2.021E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.139590\tres = 1.858E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.141377\tres = 1.707E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.143021\tres = 1.568E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.144531\tres = 1.440E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.145920\tres = 1.322E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.147195\tres = 1.213E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.148365\tres = 1.113E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.149440\tres = 1.020E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.150425\tres = 9.356E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.151329\tres = 8.574E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.152157\tres = 7.856E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.152916\tres = 7.196E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.153612\tres = 6.590E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.154249\tres = 6.033E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.154832\tres = 5.522E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.155366\tres = 5.053E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.155855\tres = 4.623E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.156302\tres = 4.229E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.156710\tres = 3.866E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.157084\tres = 3.535E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.157426\tres = 3.230E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.157738\tres = 2.952E-04\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.158023\tres = 2.697E-04\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.158284\tres = 2.464E-04\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.158522\tres = 2.251E-04\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.158739\tres = 2.055E-04\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.158937\tres = 1.876E-04\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.159119\tres = 1.713E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.159284\tres = 1.564E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.159435\tres = 1.428E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.159573\tres = 1.301E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.159699\tres = 1.188E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.159813\tres = 1.083E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.159917\tres = 9.880E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.160013\tres = 9.009E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.160100\tres = 8.222E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.160179\tres = 7.487E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.160251\tres = 6.824E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.160317\tres = 6.223E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.160376\tres = 5.675E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.160431\tres = 5.174E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.160481\tres = 4.715E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.160527\tres = 4.298E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.160568\tres = 3.910E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.160605\tres = 3.561E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.160640\tres = 3.242E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.160671\tres = 2.960E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.160699\tres = 2.689E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.160725\tres = 2.452E-05\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.160749\tres = 2.232E-05\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.160770\tres = 2.034E-05\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.160790\tres = 1.855E-05\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.160807\tres = 1.687E-05\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.160824\tres = 1.538E-05\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.160838\tres = 1.399E-05\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.160852\tres = 1.280E-05\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.160864\tres = 1.149E-05\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.160875\tres = 1.061E-05\n" ] } ], @@ -1179,9 +1190,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.163673\n", - "openmoc keff = 1.166567\n", - "bias [pcm]: 289.4\n" + "openmc keff = 1.161200\n", + "openmoc keff = 1.160875\n", + "bias [pcm]: -32.5\n" ] } ], @@ -1324,9 +1335,20 @@ "cell_type": "code", "execution_count": 31, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -1364,7 +1386,18 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", @@ -1600,25 +1633,25 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU-235\n", "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t3.31e+00 +/- 6.20e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t3.96e+00 +/- 3.40e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t5.51e+01 +/- 5.07e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.79e+01 +/- 7.27e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.90e+02 +/- 1.13e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.11e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.88e+02 +/- 9.03e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 6.88e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 5.91e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 4.03e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.48e+01 +/- 5.56e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.84e+01 +/- 8.48e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 1.25e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 7.98e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 5.73e-01%\n", "\n", "\tNuclide =\tU-238\n", "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.07e+00 +/- 6.51e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 6.61e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t6.15e-04 +/- 9.95e+00%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 6.29e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.08e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.11e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 9.03e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 6.86e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 6.74e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 8.28e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t4.75e-04 +/- 7.97e+00%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 7.56e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.22e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 7.97e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 5.72e-01%\n", "\n", "\n", "\n" @@ -1653,14 +1686,14 @@ "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t2.54e-02 +/- 6.20e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.51e-03 +/- 3.34e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t2.07e-02 +/- 5.07e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.30e-02 +/- 7.26e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.13e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.11e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 9.03e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 6.88e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 6.42e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.52e-03 +/- 3.96e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 5.56e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.32e-02 +/- 8.48e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.25e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 7.98e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 5.73e-01%\n", "\n", "\n", "\n" @@ -1709,8 +1742,8 @@ " 1\n", " 1\n", " O-16\n", - " 1.570467\n", - " 0.018506\n", + " 1.560098\n", + " 0.017801\n", " \n", " \n", " 127\n", @@ -1718,8 +1751,8 @@ " 1\n", " 1\n", " H-1\n", - " 0.235674\n", - " 0.009063\n", + " 0.234877\n", + " 0.010096\n", " \n", " \n", " 124\n", @@ -1727,8 +1760,8 @@ " 1\n", " 2\n", " O-16\n", - " 0.288333\n", - " 0.003932\n", + " 0.288236\n", + " 0.004397\n", " \n", " \n", " 125\n", @@ -1736,8 +1769,8 @@ " 1\n", " 2\n", " H-1\n", - " 1.581295\n", - " 0.008248\n", + " 1.587815\n", + " 0.007847\n", " \n", " \n", " 122\n", @@ -1754,8 +1787,8 @@ " 1\n", " 3\n", " H-1\n", - " 0.010828\n", - " 0.000616\n", + " 0.010122\n", + " 0.000513\n", " \n", " \n", " 120\n", @@ -1799,12 +1832,12 @@ ], "text/plain": [ " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 O-16 1.570467 0.018506\n", - "127 10002 1 1 H-1 0.235674 0.009063\n", - "124 10002 1 2 O-16 0.288333 0.003932\n", - "125 10002 1 2 H-1 1.581295 0.008248\n", + "126 10002 1 1 O-16 1.560098 0.017801\n", + "127 10002 1 1 H-1 0.234877 0.010096\n", + "124 10002 1 2 O-16 0.288236 0.004397\n", + "125 10002 1 2 H-1 1.587815 0.007847\n", "122 10002 1 3 O-16 0.000000 0.000000\n", - "123 10002 1 3 H-1 0.010828 0.000616\n", + "123 10002 1 3 H-1 0.010122 0.000513\n", "120 10002 1 4 O-16 0.000000 0.000000\n", "121 10002 1 4 H-1 0.000000 0.000000\n", "118 10002 1 5 O-16 0.000000 0.000000\n", @@ -1866,9 +1899,9 @@ "outputs": [ { "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", + "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1936,18 +1969,18 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU-238\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t2.16e-01 +/- 3.77e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t2.54e-01 +/- 6.46e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 5.85e-01%\n", "\n", "\tNuclide =\tO-16\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.03e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 7.83e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", "\n", "\tNuclide =\tU-235\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.72e-03 +/- 1.13e+00%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 5.18e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", "\n", "\n", "\n" @@ -1986,48 +2019,48 @@ " 10000\n", " 1\n", " U-238\n", - " 9.566947\n", - " 0.036112\n", + " 9.589323\n", + " 0.038756\n", " \n", " \n", " 4\n", " 10000\n", " 1\n", " O-16\n", - " 3.146780\n", - " 0.012666\n", + " 3.159101\n", + " 0.012939\n", " \n", " \n", " 5\n", " 10000\n", " 1\n", " U-235\n", - " 20.591253\n", - " 0.232675\n", + " 21.095256\n", + " 0.257787\n", " \n", " \n", " 0\n", " 10000\n", " 2\n", " U-238\n", - " 11.204912\n", - " 0.072348\n", + " 11.178844\n", + " 0.065428\n", " \n", " \n", " 1\n", " 10000\n", " 2\n", " O-16\n", - " 3.798407\n", - " 0.029742\n", + " 3.800027\n", + " 0.024538\n", " \n", " \n", " 2\n", " 10000\n", " 2\n", " U-235\n", - " 484.529684\n", - " 2.510940\n", + " 485.513530\n", + " 2.418761\n", " \n", " \n", "\n", @@ -2035,12 +2068,12 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-238 9.566947 0.036112\n", - "4 10000 1 O-16 3.146780 0.012666\n", - "5 10000 1 U-235 20.591253 0.232675\n", - "0 10000 2 U-238 11.204912 0.072348\n", - "1 10000 2 O-16 3.798407 0.029742\n", - "2 10000 2 U-235 484.529684 2.510940" + "3 10000 1 U-238 9.589323 0.038756\n", + "4 10000 1 O-16 3.159101 0.012939\n", + "5 10000 1 U-235 21.095256 0.257787\n", + "0 10000 2 U-238 11.178844 0.065428\n", + "1 10000 2 O-16 3.800027 0.024538\n", + "2 10000 2 U-235 485.513530 2.418761" ] }, "execution_count": 46, @@ -2176,9 +2209,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.231090\n", - "openmoc keff = 1.229390\n", - "bias [pcm]: -170.1\n" + "openmc keff = 1.227616\n", + "openmoc keff = 1.225325\n", + "bias [pcm]: -229.1\n" ] } ], @@ -2206,7 +2239,23 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n" + ] + } + ], "source": [ "su.make_opencg_geometry()\n", "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)\n", @@ -2270,9 +2319,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.231090\n", - "openmoc keff = 1.232146\n", - "bias [pcm]: 105.6\n" + "openmc keff = 1.227616\n", + "openmoc keff = 1.227096\n", + "bias [pcm]: -52.0\n" ] } ], diff --git a/openmc/cross.py b/openmc/cross.py index 9b8a1d240..b91344671 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -9,7 +9,7 @@ if sys.version_info[0] >= 3: basestring = str # Acceptable tally arithmetic binary operations -TALLY_ARITHMETIC_OPS = ['+', '-', '*', '/', '^'] +_TALLY_ARITHMETIC_OPS = ['+', '-', '*', '/', '^'] class CrossScore(object): @@ -78,6 +78,11 @@ class CrossScore(object): else: return existing + def __repr__(self): + string = '({0} {1} {2})'.format(self.left_score, + self.binary_op, self.right_score) + return string + @property def left_score(self): return self._left_score @@ -103,14 +108,9 @@ class CrossScore(object): @binary_op.setter def binary_op(self, binary_op): cv.check_type('binary_op', binary_op, (basestring, CrossScore)) - cv.check_value('binary_op', binary_op, TALLY_ARITHMETIC_OPS) + cv.check_value('binary_op', binary_op, _TALLY_ARITHMETIC_OPS) self._binary_op = binary_op - def __repr__(self): - string = '({0} {1} {2})'.format(self.left_score, - self.binary_op, self.right_score) - return string - class CrossNuclide(object): """A special-purpose nuclide used to encapsulate all combinations of two @@ -178,6 +178,28 @@ class CrossNuclide(object): else: return existing + def __repr__(self): + + string = '' + + # If the Summary was linked, the left nuclide is a Nuclide object + if isinstance(self.left_nuclide, Nuclide): + string += '(' + self.left_nuclide.name + # If the Summary was not linked, the left nuclide is the ZAID + else: + string += '(' + str(self.left_nuclide) + + string += ' ' + self.binary_op + ' ' + + # If the Summary was linked, the right nuclide is a Nuclide object + if isinstance(self.right_nuclide, Nuclide): + string += self.right_nuclide.name + ')' + # If the Summary was not linked, the right nuclide is the ZAID + else: + string += str(self.right_nuclide) + ')' + + return string + @property def left_nuclide(self): return self._left_nuclide @@ -203,34 +225,9 @@ class CrossNuclide(object): @binary_op.setter def binary_op(self, binary_op): cv.check_type('binary_op', binary_op, basestring) - cv.check_value('binary_op', binary_op, TALLY_ARITHMETIC_OPS) + cv.check_value('binary_op', binary_op, _TALLY_ARITHMETIC_OPS) self._binary_op = binary_op - def __eq__(self, other): - return str(other) == str(self) - - def __repr__(self): - - string = '' - - # If the Summary was linked, the left nuclide is a Nuclide object - if isinstance(self.left_nuclide, Nuclide): - string += '(' + self.left_nuclide.name - # If the Summary was not linked, the left nuclide is the ZAID - else: - string += '(' + str(self.left_nuclide) - - string += ' ' + self.binary_op + ' ' - - # If the Summary was linked, the right nuclide is a Nuclide object - if isinstance(self.right_nuclide, Nuclide): - string += self.right_nuclide.name + ')' - # If the Summary was not linked, the right nuclide is the ZAID - else: - string += str(self.right_nuclide) + ')' - - return string - class CrossFilter(object): """A special-purpose filter used to encapsulate all combinations of two @@ -289,6 +286,18 @@ class CrossFilter(object): def __ne__(self, other): return not self == other + def __repr__(self): + + string = 'CrossFilter\n' + filter_type = '({0} {1} {2})'.format(self.left_filter.type, + self.binary_op, + self.right_filter.type) + filter_bins = '({0} {1} {2})'.format(self.left_filter.bins, + self.binary_op, + self.right_filter.bins) + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', filter_type) + string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', filter_bins) + return string def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -366,7 +375,7 @@ class CrossFilter(object): @binary_op.setter def binary_op(self, binary_op): cv.check_type('binary_op', binary_op, basestring) - cv.check_value('binary_op', binary_op, TALLY_ARITHMETIC_OPS) + cv.check_value('binary_op', binary_op, _TALLY_ARITHMETIC_OPS) self._binary_op = binary_op @stride.setter @@ -415,7 +424,7 @@ class CrossFilter(object): Parameters ---------- - data_size : Integral + datasize : Integral The total number of bins in the tally corresponding to this filter summary : None or Summary An optional Summary object to be used to construct columns for @@ -452,17 +461,4 @@ class CrossFilter(object): right_df = right_df.astype(str) df = '(' + left_df + ' ' + self.binary_op + ' ' + right_df + ')' - return df - - def __repr__(self): - - string = 'CrossFilter\n' - filter_type = '({0} {1} {2})'.format(self.left_filter.type, - self.binary_op, - self.right_filter.type) - filter_bins = '({0} {1} {2})'.format(self.left_filter.bins, - self.binary_op, - self.right_filter.bins) - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', filter_type) - string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', filter_bins) - return string \ No newline at end of file + return df \ No newline at end of file diff --git a/openmc/element.py b/openmc/element.py index a99d47127..56821b5d2 100644 --- a/openmc/element.py +++ b/openmc/element.py @@ -51,9 +51,17 @@ class Element(object): else: return False + def __ne__(self, other): + return not self == other + def __hash__(self): return hash((self._name, self._xs)) + def __repr__(self): + string = 'Element - {0}\n'.format(self._name) + string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs) + return string + @property def xs(self): return self._xs @@ -70,9 +78,4 @@ class Element(object): @name.setter def name(self, name): check_type('name', name, basestring) - self._name = name - - def __repr__(self): - string = 'Element - {0}\n'.format(self._name) - string += '{0: <16}{1}{2}\n'.format('\tXS', '=\t', self._xs) - return string + self._name = name \ No newline at end of file diff --git a/openmc/filter.py b/openmc/filter.py index 385ba20cf..63034fe57 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -104,6 +104,13 @@ class Filter(object): else: return existing + def __repr__(self): + string = 'Filter\n' + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.type) + string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', self.bins) + string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self.offset) + return string + @property def type(self): return self._type @@ -741,11 +748,4 @@ class Filter(object): filter_bins = filter_bins df = pd.concat([df, pd.DataFrame({self.type : filter_bins})]) - return df - - def __repr__(self): - string = 'Filter\n' - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self.type) - string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', self.bins) - string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self.offset) - return string + return df \ No newline at end of file diff --git a/openmc/material.py b/openmc/material.py index 3ca8f2413..92c77858d 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -83,6 +83,38 @@ class Material(object): # If specified, this file will be used instead of composition values self._distrib_otf_file = None + def __repr__(self): + string = 'Material\n' + string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) + + string += '{0: <16}{1}{2}'.format('\tDensity', '=\t', self._density) + string += ' [{0}]\n'.format(self._density_units) + + string += '{0: <16}\n'.format('\tS(a,b) Tables') + + for sab in self._sab: + string += '{0: <16}{1}[{2}{3}]\n'.format('\tS(a,b)', '=\t', + sab[0], sab[1]) + + string += '{0: <16}\n'.format('\tNuclides') + + for nuclide in self._nuclides: + percent = self._nuclides[nuclide][1] + percent_type = self._nuclides[nuclide][2] + string += '{0: <16}'.format('\t{0}'.format(nuclide)) + string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) + + string += '{0: <16}\n'.format('\tElements') + + for element in self._elements: + percent = self._nuclides[element][1] + percent_type = self._nuclides[element][2] + string += '{0: >16}'.format('\t{0}'.format(element)) + string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) + + return string + @property def id(self): return self._id @@ -335,38 +367,6 @@ class Material(object): return nuclides - def __repr__(self): - string = 'Material\n' - string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) - - string += '{0: <16}{1}{2}'.format('\tDensity', '=\t', self._density) - string += ' [{0}]\n'.format(self._density_units) - - string += '{0: <16}\n'.format('\tS(a,b) Tables') - - for sab in self._sab: - string += '{0: <16}{1}[{2}{3}]\n'.format('\tS(a,b)', '=\t', - sab[0], sab[1]) - - string += '{0: <16}\n'.format('\tNuclides') - - for nuclide in self._nuclides: - percent = self._nuclides[nuclide][1] - percent_type = self._nuclides[nuclide][2] - string += '{0: <16}'.format('\t{0}'.format(nuclide)) - string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) - - string += '{0: <16}\n'.format('\tElements') - - for element in self._elements: - percent = self._nuclides[element][1] - percent_type = self._nuclides[element][2] - string += '{0: >16}'.format('\t{0}'.format(element)) - string += '=\t{0: <12} [{1}]\n'.format(percent, percent_type) - - return string - def _get_nuclide_xml(self, nuclide, distrib=False): xml_element = ET.Element("nuclide") xml_element.set("name", nuclide[0]._name) diff --git a/openmc/nuclide.py b/openmc/nuclide.py index a616edac9..f24e62a48 100644 --- a/openmc/nuclide.py +++ b/openmc/nuclide.py @@ -54,9 +54,19 @@ class Nuclide(object): else: return False + def __ne__(self, other): + return not self == other + def __hash__(self): return hash((self._name, self._xs)) + 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) + return string + @property def name(self): return self._name @@ -82,11 +92,4 @@ class Nuclide(object): @zaid.setter def zaid(self, zaid): check_type('zaid', zaid, Integral) - self._zaid = zaid - - 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) - return string + self._zaid = zaid \ No newline at end of file diff --git a/openmc/region.py b/openmc/region.py index 5baac22dd..f8f3a7378 100644 --- a/openmc/region.py +++ b/openmc/region.py @@ -213,6 +213,9 @@ class Intersection(Region): def __init__(self, *nodes): self.nodes = list(nodes) + def __str__(self): + return '(' + ' '.join(map(str, self.nodes)) + ')' + @property def nodes(self): return self._nodes @@ -222,9 +225,6 @@ class Intersection(Region): check_type('nodes', nodes, Iterable, Region) self._nodes = nodes - def __str__(self): - return '(' + ' '.join(map(str, self.nodes)) + ')' - class Union(Region): """Union of two or more regions. @@ -252,6 +252,9 @@ class Union(Region): def __init__(self, *nodes): self.nodes = list(nodes) + def __str__(self): + return '(' + ' | '.join(map(str, self.nodes)) + ')' + @property def nodes(self): return self._nodes @@ -261,9 +264,6 @@ class Union(Region): check_type('nodes', nodes, Iterable, Region) self._nodes = nodes - def __str__(self): - return '(' + ' | '.join(map(str, self.nodes)) + ')' - class Complement(Region): """Complement of a region. @@ -295,6 +295,9 @@ class Complement(Region): def __init__(self, node): self.node = node + def __str__(self): + return '~' + str(self.node) + @property def node(self): return self._node @@ -303,6 +306,3 @@ class Complement(Region): def node(self, node): check_type('node', node, Region) self._node = node - - def __str__(self): - return '~' + str(self.node) diff --git a/openmc/surface.py b/openmc/surface.py index afa426fa3..ae2e222ac 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -75,6 +75,22 @@ class Surface(object): def __pos__(self): return Halfspace(self, '+') + def __repr__(self): + string = 'Surface\n' + string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._type) + string += '{0: <16}{1}{2}\n'.format('\tBoundary', '=\t', self._boundary_type) + + coeffs = '{0: <16}'.format('\tCoefficients') + '\n' + + for coeff in self._coeffs: + coeffs += '{0: <16}{1}{2}\n'.format(coeff, '=\t', self._coeffs[coeff]) + + string += coeffs + + return string + @property def id(self): return self._id @@ -120,22 +136,6 @@ class Surface(object): check_value('boundary type', boundary_type, _BC_TYPES) self._boundary_type = boundary_type - def __repr__(self): - string = 'Surface\n' - string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._type) - string += '{0: <16}{1}{2}\n'.format('\tBoundary', '=\t', self._boundary_type) - - coeffs = '{0: <16}'.format('\tCoefficients') + '\n' - - for coeff in self._coeffs: - coeffs += '{0: <16}{1}{2}\n'.format(coeff, '=\t', self._coeffs[coeff]) - - string += coeffs - - return string - def create_xml_subelement(self): element = ET.Element("surface") element.set("id", str(self._id)) diff --git a/openmc/tallies.py b/openmc/tallies.py index a25004ff9..f990572e5 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -204,6 +204,32 @@ class Tally(object): return hash(tuple(hashable)) + def __repr__(self): + string = 'Tally\n' + string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self.id) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self.name) + + string += '{0: <16}{1}\n'.format('\tFilters', '=\t') + + for filter in self.filters: + string += '{0: <16}\t\t{1}\t{2}\n'.format('', filter.type, + filter.bins) + + string += '{0: <16}{1}'.format('\tNuclides', '=\t') + + for nuclide in self.nuclides: + if isinstance(nuclide, Nuclide): + string += '{0} '.format(nuclide.name) + else: + string += '{0} '.format(nuclide) + + string += '\n' + + string += '{0: <16}{1}{2}\n'.format('\tScores', '=\t', self.scores) + string += '{0: <16}{1}{2}\n'.format('\tEstimator', '=\t', self.estimator) + + return string + @property def id(self): return self._id @@ -518,32 +544,6 @@ class Tally(object): self._nuclides.remove(nuclide) - def __repr__(self): - string = 'Tally\n' - string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self.id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self.name) - - string += '{0: <16}{1}\n'.format('\tFilters', '=\t') - - for filter in self.filters: - string += '{0: <16}\t\t{1}\t{2}\n'.format('', filter.type, - filter.bins) - - string += '{0: <16}{1}'.format('\tNuclides', '=\t') - - for nuclide in self.nuclides: - if isinstance(nuclide, Nuclide): - string += '{0} '.format(nuclide.name) - else: - string += '{0} '.format(nuclide) - - string += '\n' - - string += '{0: <16}{1}{2}\n'.format('\tScores', '=\t', self.scores) - string += '{0: <16}{1}{2}\n'.format('\tEstimator', '=\t', self.estimator) - - return string - def can_merge(self, tally): """Determine if another tally can be merged with this one diff --git a/openmc/trigger.py b/openmc/trigger.py index e695defde..5af477edd 100644 --- a/openmc/trigger.py +++ b/openmc/trigger.py @@ -58,6 +58,13 @@ class Trigger(object): else: return existing + def __repr__(self): + string = 'Trigger\n' + string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._trigger_type) + string += '{0: <16}{1}{2}\n'.format('\tThreshold', '=\t', self._threshold) + string += '{0: <16}{1}{2}\n'.format('\tScores', '=\t', self._scores) + return string + @property def trigger_type(self): return self._trigger_type @@ -102,13 +109,6 @@ class Trigger(object): else: self._scores.append(score) - def __repr__(self): - string = 'Trigger\n' - string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._trigger_type) - string += '{0: <16}{1}{2}\n'.format('\tThreshold', '=\t', self._threshold) - string += '{0: <16}{1}{2}\n'.format('\tScores', '=\t', self._scores) - return string - def get_trigger_xml(self, element): """Return XML representation of the trigger diff --git a/openmc/universe.py b/openmc/universe.py index e9f7f3284..a4ea38de9 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -73,6 +73,30 @@ class Cell(object): self._translation = None self._offsets = None + def __repr__(self): + string = 'Cell\n' + string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) + + if isinstance(self._fill, openmc.Material): + string += '{0: <16}{1}{2}\n'.format('\tMaterial', '=\t', + self._fill._id) + elif isinstance(self._fill, (Universe, Lattice)): + string += '{0: <16}{1}{2}\n'.format('\tFill', '=\t', + self._fill._id) + else: + string += '{0: <16}{1}{2}\n'.format('\tFill', '=\t', self._fill) + + string += '{0: <16}{1}{2}\n'.format('\tRegion', '=\t', self._region) + + string += '{0: <16}{1}{2}\n'.format('\tRotation', '=\t', + self._rotation) + string += '{0: <16}{1}{2}\n'.format('\tTranslation', '=\t', + self._translation) + string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self._offsets) + + return string + @property def id(self): return self._id @@ -298,30 +322,6 @@ class Cell(object): return universes - def __repr__(self): - string = 'Cell\n' - string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) - - if isinstance(self._fill, openmc.Material): - string += '{0: <16}{1}{2}\n'.format('\tMaterial', '=\t', - self._fill._id) - elif isinstance(self._fill, (Universe, Lattice)): - string += '{0: <16}{1}{2}\n'.format('\tFill', '=\t', - self._fill._id) - else: - string += '{0: <16}{1}{2}\n'.format('\tFill', '=\t', self._fill) - - string += '{0: <16}{1}{2}\n'.format('\tRegion', '=\t', self._region) - - string += '{0: <16}{1}{2}\n'.format('\tRotation', '=\t', - self._rotation) - string += '{0: <16}{1}{2}\n'.format('\tTranslation', '=\t', - self._translation) - string += '{0: <16}{1}{2}\n'.format('\tOffset', '=\t', self._offsets) - - return string - def create_xml_subelement(self, xml_element): element = ET.Element("cell") element.set("id", str(self._id)) @@ -836,6 +836,50 @@ class RectLattice(Lattice): self._lower_left = None self._offsets = None + def __repr__(self): + string = 'RectLattice\n' + string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) + string += '{0: <16}{1}{2}\n'.format('\tDimension', '=\t', + self._dimension) + string += '{0: <16}{1}{2}\n'.format('\tLower Left', '=\t', + self._lower_left) + string += '{0: <16}{1}{2}\n'.format('\tPitch', '=\t', self._pitch) + + if self._outer is not None: + string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', + self._outer._id) + else: + string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', + self._outer) + + string += '{0: <16}\n'.format('\tUniverses') + + # Lattice nested Universe IDs - column major for Fortran + for i, universe in enumerate(np.ravel(self._universes)): + string += '{0} '.format(universe._id) + + # Add a newline character every time we reach end of row of cells + if (i+1) % self._dimension[-1] == 0: + string += '\n' + + string = string.rstrip('\n') + + if self._offsets is not None: + string += '{0: <16}\n'.format('\tOffsets') + + # Lattice cell offsets + for i, offset in enumerate(np.ravel(self._offsets)): + string += '{0} '.format(offset) + + # Add a newline character when we reach end of row of cells + if (i+1) % self._dimension[-1] == 0: + string += '\n' + + string = string.rstrip('\n') + + return string + @property def dimension(self): return self._dimension @@ -893,50 +937,6 @@ class RectLattice(Lattice): return offset - def __repr__(self): - string = 'RectLattice\n' - string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) - string += '{0: <16}{1}{2}\n'.format('\tDimension', '=\t', - self._dimension) - string += '{0: <16}{1}{2}\n'.format('\tLower Left', '=\t', - self._lower_left) - string += '{0: <16}{1}{2}\n'.format('\tPitch', '=\t', self._pitch) - - if self._outer is not None: - string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', - self._outer._id) - else: - string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', - self._outer) - - string += '{0: <16}\n'.format('\tUniverses') - - # Lattice nested Universe IDs - column major for Fortran - for i, universe in enumerate(np.ravel(self._universes)): - string += '{0} '.format(universe._id) - - # Add a newline character every time we reach end of row of cells - if (i+1) % self._dimension[-1] == 0: - string += '\n' - - string = string.rstrip('\n') - - if self._offsets is not None: - string += '{0: <16}\n'.format('\tOffsets') - - # Lattice cell offsets - for i, offset in enumerate(np.ravel(self._offsets)): - string += '{0} '.format(offset) - - # Add a newline character when we reach end of row of cells - if (i+1) % self._dimension[-1] == 0: - string += '\n' - - string = string.rstrip('\n') - - return string - def create_xml_subelement(self, xml_element): # Determine if XML element already contains subelement for this Lattice path = './lattice[@id=\'{0}\']'.format(self._id) @@ -1052,6 +1052,34 @@ class HexLattice(Lattice): self._num_axial = None self._center = None + def __repr__(self): + string = 'HexLattice\n' + string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) + string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) + string += '{0: <16}{1}{2}\n'.format('\t# Rings', '=\t', self._num_rings) + string += '{0: <16}{1}{2}\n'.format('\t# Axial', '=\t', self._num_axial) + string += '{0: <16}{1}{2}\n'.format('\tCenter', '=\t', + self._center) + string += '{0: <16}{1}{2}\n'.format('\tPitch', '=\t', self._pitch) + + if self._outer is not None: + string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', + self._outer._id) + else: + string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', + self._outer) + + string += '{0: <16}\n'.format('\tUniverses') + + if self._num_axial is not None: + slices = [self._repr_axial_slice(x) for x in self._universes] + string += '\n'.join(slices) + + else: + string += self._repr_axial_slice(self._universes) + + return string + @property def num_rings(self): return self._num_rings @@ -1172,34 +1200,6 @@ class HexLattice(Lattice): 6*(self._num_rings - 1 - r)) raise ValueError(msg) - def __repr__(self): - string = 'HexLattice\n' - string += '{0: <16}{1}{2}\n'.format('\tID', '=\t', self._id) - string += '{0: <16}{1}{2}\n'.format('\tName', '=\t', self._name) - string += '{0: <16}{1}{2}\n'.format('\t# Rings', '=\t', self._num_rings) - string += '{0: <16}{1}{2}\n'.format('\t# Axial', '=\t', self._num_axial) - string += '{0: <16}{1}{2}\n'.format('\tCenter', '=\t', - self._center) - string += '{0: <16}{1}{2}\n'.format('\tPitch', '=\t', self._pitch) - - if self._outer is not None: - string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', - self._outer._id) - else: - string += '{0: <16}{1}{2}\n'.format('\tOuter', '=\t', - self._outer) - - string += '{0: <16}\n'.format('\tUniverses') - - if self._num_axial is not None: - slices = [self._repr_axial_slice(x) for x in self._universes] - string += '\n'.join(slices) - - else: - string += self._repr_axial_slice(self._universes) - - return string - def create_xml_subelement(self, xml_element): # Determine if XML element already contains subelement for this Lattice path = './hex_lattice[@id=\'{0}\']'.format(self._id) From 1e63829dfd7d3b7bdc4706de8b6f04aea8a59e61 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 8 Oct 2015 16:04:23 -0400 Subject: [PATCH 079/130] Revised EnergyGroups class per comments from @paulromano --- .../examples/multi-group-cross-sections.ipynb | 127 ++-- .../examples/pandas-dataframes.ipynb | 672 ++++++++--------- .../pythonapi/examples/tally-arithmetic.ipynb | 676 ++++++++++++++++-- openmc/filter.py | 6 +- openmc/mgxs/groups.py | 63 +- 5 files changed, 1044 insertions(+), 500 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 5e1533781..7c7ad7bbb 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -330,7 +330,7 @@ "cell_type": "code", "execution_count": 12, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -437,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -463,7 +463,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 14:20:33\n", + " Date/Time: 2015-10-08 16:01:19\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -548,20 +548,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.5400E-01 seconds\n", - " Reading cross sections = 1.0100E-01 seconds\n", - " Total time in simulation = 1.4106E+01 seconds\n", - " Time in transport only = 1.4092E+01 seconds\n", - " Time in inactive batches = 2.1000E+00 seconds\n", - " Time in active batches = 1.2006E+01 seconds\n", + " Total time for initialization = 3.9700E-01 seconds\n", + " Reading cross sections = 9.1000E-02 seconds\n", + " Total time in simulation = 1.2622E+01 seconds\n", + " Time in transport only = 1.2608E+01 seconds\n", + " Time in inactive batches = 1.8770E+00 seconds\n", + " Time in active batches = 1.0745E+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 = 3.0000E-03 seconds\n", - " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.4572E+01 seconds\n", - " Calculation Rate (inactive) = 11904.8 neutrons/second\n", - " Calculation Rate (active) = 8329.17 neutrons/second\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 3.0000E-03 seconds\n", + " Total time elapsed = 1.3030E+01 seconds\n", + " Calculation Rate (inactive) = 13319.1 neutrons/second\n", + " Calculation Rate (active) = 9306.65 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -579,7 +579,7 @@ "0" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -606,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -625,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -645,7 +645,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -667,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -710,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -751,7 +751,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -881,7 +881,7 @@ "54 1 2 2 total 0.266499 0.001265" ] }, - "execution_count": 21, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -900,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -918,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 24, "metadata": { "collapsed": true }, @@ -946,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -985,7 +985,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": { "collapsed": true }, @@ -1019,7 +1019,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -1181,7 +1181,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -1244,7 +1244,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -1278,7 +1278,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": { "collapsed": true }, @@ -1304,7 +1304,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -1333,7 +1333,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1382,7 +1382,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1423,7 +1423,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": { "collapsed": true }, @@ -1450,7 +1450,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1480,7 +1480,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1520,7 +1520,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1531,7 +1531,7 @@ "0" ] }, - "execution_count": 36, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1561,7 +1561,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1582,7 +1582,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1618,7 +1618,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1672,7 +1672,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1714,7 +1714,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -1844,7 +1844,7 @@ "119 10002 1 5 H-1 0.000000 0.000000" ] }, - "execution_count": 41, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1864,7 +1864,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -1892,7 +1892,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 44, "metadata": { "collapsed": false }, @@ -1901,7 +1901,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1932,7 +1932,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 45, "metadata": { "collapsed": true }, @@ -1954,7 +1954,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -1993,7 +1993,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -2076,7 +2076,7 @@ "2 10000 2 U-235 485.513530 2.418761" ] }, - "execution_count": 46, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -2102,7 +2102,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 48, "metadata": { "collapsed": true }, @@ -2124,7 +2124,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -2172,7 +2172,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -2200,7 +2200,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2235,7 +2235,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -2292,7 +2292,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 53, "metadata": { "collapsed": false }, @@ -2310,7 +2310,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 54, "metadata": { "collapsed": false }, @@ -2346,6 +2346,15 @@ "* Spatial discretization of OpenMOC's mesh\n", "* Constant-in-angle multi-group cross sections" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index c7da78a6e..cc2bd3b11 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -164,7 +164,18 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -225,7 +236,20 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", @@ -385,7 +409,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTAzVDEzOjAz\nOjU5LTA0OjAwMu4u/QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wM1QxMzowMzo1OS0wNDow\nMEOzlkEAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTA4VDE0OjIx\nOjU1LTA0OjAwjn8AkAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wOFQxNDoyMTo1NS0wNDow\nMP8iuCwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -574,8 +598,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: e0c2aace2e73367536fa03e153b67a2d038cd2b3\n", - " Date/Time: 2015-10-03 13:03:59\n", + " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", + " Date/Time: 2015-10-08 14:21:55\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -588,11 +612,11 @@ " Reading materials XML file...\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: 92235.71c\n", - " Loading ACE cross section table: 5010.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", " Initializing source particles...\n", "\n", @@ -602,39 +626,35 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 0.59998 \n", - " 2/1 0.65473 \n", - " 3/1 0.67452 \n", - " 4/1 0.66458 \n", - " 5/1 0.70093 \n", - " 6/1 0.70726 \n", - " 7/1 0.65977 0.68351 +/- 0.02375\n", - " 8/1 0.68457 0.68387 +/- 0.01372\n", - " 9/1 0.70024 0.68796 +/- 0.01053\n", - " 10/1 0.64895 0.68016 +/- 0.01128\n", - " 11/1 0.68744 0.68137 +/- 0.00929\n", - " 12/1 0.68037 0.68123 +/- 0.00786\n", - " 13/1 0.64865 0.67715 +/- 0.00793\n", - " 14/1 0.71415 0.68127 +/- 0.00811\n", - " 15/1 0.65717 0.67886 +/- 0.00764\n", - " 16/1 0.71598 0.68223 +/- 0.00769\n", - " 17/1 0.67285 0.68145 +/- 0.00707\n", - " 18/1 0.69329 0.68236 +/- 0.00656\n", - " 19/1 0.65696 0.68055 +/- 0.00634\n", - " 20/1 0.65500 0.67884 +/- 0.00615\n", - " Triggers unsatisfied, max unc./thresh. is 1.21110 for absorption in tally 10002\n", - " The estimated number of batches is 28\n", + " 1/1 0.54958 \n", + " 2/1 0.67628 \n", + " 3/1 0.70618 \n", + " 4/1 0.66601 \n", + " 5/1 0.70876 \n", + " 6/1 0.69708 \n", + " 7/1 0.68623 0.69166 +/- 0.00543\n", + " 8/1 0.69159 0.69163 +/- 0.00313\n", + " 9/1 0.69908 0.69349 +/- 0.00289\n", + " 10/1 0.63865 0.68253 +/- 0.01120\n", + " 11/1 0.65439 0.67784 +/- 0.01027\n", + " 12/1 0.68518 0.67889 +/- 0.00875\n", + " 13/1 0.69507 0.68091 +/- 0.00784\n", + " 14/1 0.70129 0.68317 +/- 0.00728\n", + " 15/1 0.71336 0.68619 +/- 0.00717\n", + " 16/1 0.68725 0.68629 +/- 0.00649\n", + " 17/1 0.72579 0.68958 +/- 0.00678\n", + " 18/1 0.67149 0.68819 +/- 0.00639\n", + " 19/1 0.67771 0.68744 +/- 0.00596\n", + " 20/1 0.68035 0.68697 +/- 0.00557\n", + " Triggers unsatisfied, max unc./thresh. is 1.09851 for absorption in tally 10002\n", + " The estimated number of batches is 24\n", " Creating state point statepoint.020.h5...\n", - " 21/1 0.67090 0.67835 +/- 0.00577\n", - " 22/1 0.69025 0.67905 +/- 0.00546\n", - " 23/1 0.66113 0.67805 +/- 0.00525\n", - " 24/1 0.67934 0.67812 +/- 0.00496\n", - " 25/1 0.67203 0.67781 +/- 0.00472\n", - " 26/1 0.66928 0.67741 +/- 0.00451\n", - " 27/1 0.70271 0.67856 +/- 0.00445\n", - " 28/1 0.70233 0.67959 +/- 0.00437\n", - " Triggers satisfied for batch 28\n", - " Creating state point statepoint.028.h5...\n", + " 21/1 0.68105 0.68660 +/- 0.00522\n", + " 22/1 0.67168 0.68572 +/- 0.00498\n", + " 23/1 0.67520 0.68514 +/- 0.00473\n", + " 24/1 0.67940 0.68483 +/- 0.00449\n", + " Triggers satisfied for batch 24\n", + " Creating state point statepoint.024.h5...\n", "\n", " ===========================================================================\n", " ======================> SIMULATION FINISHED <======================\n", @@ -643,28 +663,28 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9400E-01 seconds\n", - " Reading cross sections = 8.8000E-02 seconds\n", - " Total time in simulation = 1.0755E+01 seconds\n", - " Time in transport only = 1.0746E+01 seconds\n", - " Time in inactive batches = 1.2680E+00 seconds\n", - " Time in active batches = 9.4870E+00 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", + " Total time for initialization = 4.3800E-01 seconds\n", + " Reading cross sections = 9.7000E-02 seconds\n", + " Total time in simulation = 9.7830E+00 seconds\n", + " Time in transport only = 9.7730E+00 seconds\n", + " Time in inactive batches = 1.4030E+00 seconds\n", + " Time in active batches = 8.3800E+00 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 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.1159E+01 seconds\n", - " Calculation Rate (inactive) = 9858.04 neutrons/second\n", - " Calculation Rate (active) = 3952.78 neutrons/second\n", + " Total time elapsed = 1.0230E+01 seconds\n", + " Calculation Rate (inactive) = 8909.48 neutrons/second\n", + " Calculation Rate (active) = 4474.94 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 0.68196 +/- 0.00427\n", - " k-effective (Track-length) = 0.67959 +/- 0.00437\n", - " k-effective (Absorption) = 0.67957 +/- 0.00402\n", - " Combined k-effective = 0.67943 +/- 0.00295\n", - " Leakage Fraction = 0.34370 +/- 0.00201\n", + " k-effective (Collision) = 0.68264 +/- 0.00405\n", + " k-effective (Track-length) = 0.68483 +/- 0.00449\n", + " k-effective (Absorption) = 0.68225 +/- 0.00336\n", + " Combined k-effective = 0.68275 +/- 0.00346\n", + " Leakage Fraction = 0.34345 +/- 0.00167\n", "\n" ] }, @@ -781,13 +801,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.1127471 ]]\n", + "[[[ 0.18257268]]\n", "\n", - " [[ 0.06599162]]\n", + " [[ 0.07111957]]\n", "\n", - " [[ 0.25310075]]\n", + " [[ 0.40880276]]\n", "\n", - " [[ 0.10150973]]]\n" + " [[ 0.16407535]]]\n" ] } ], @@ -840,8 +860,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000224\n", - " 0.000025\n", + " 0.000202\n", + " 0.000037\n", " \n", " \n", " 1\n", @@ -850,8 +870,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.000546\n", - " 0.000062\n", + " 0.000492\n", + " 0.000090\n", " \n", " \n", " 2\n", @@ -860,7 +880,7 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000071\n", + " 0.000076\n", " 0.000004\n", " \n", " \n", @@ -870,7 +890,7 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000187\n", + " 0.000204\n", " 0.000010\n", " \n", " \n", @@ -880,8 +900,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000392\n", - " 0.000045\n", + " 0.000375\n", + " 0.000039\n", " \n", " \n", " 5\n", @@ -890,8 +910,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.000955\n", - " 0.000110\n", + " 0.000914\n", + " 0.000094\n", " \n", " \n", " 6\n", @@ -900,8 +920,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000096\n", - " 0.000005\n", + " 0.000107\n", + " 0.000013\n", " \n", " \n", " 7\n", @@ -910,8 +930,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000252\n", - " 0.000014\n", + " 0.000278\n", + " 0.000032\n", " \n", " \n", " 8\n", @@ -920,8 +940,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000551\n", - " 0.000053\n", + " 0.000564\n", + " 0.000056\n", " \n", " \n", " 9\n", @@ -930,8 +950,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001343\n", - " 0.000130\n", + " 0.001374\n", + " 0.000137\n", " \n", " \n", " 10\n", @@ -940,8 +960,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000131\n", - " 0.000008\n", + " 0.000149\n", + " 0.000007\n", " \n", " \n", " 11\n", @@ -950,8 +970,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000343\n", - " 0.000019\n", + " 0.000388\n", + " 0.000018\n", " \n", " \n", " 12\n", @@ -960,8 +980,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000688\n", - " 0.000063\n", + " 0.000669\n", + " 0.000044\n", " \n", " \n", " 13\n", @@ -970,8 +990,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001676\n", - " 0.000153\n", + " 0.001631\n", + " 0.000108\n", " \n", " \n", " 14\n", @@ -980,8 +1000,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000151\n", - " 0.000007\n", + " 0.000165\n", + " 0.000011\n", " \n", " \n", " 15\n", @@ -990,8 +1010,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000395\n", - " 0.000019\n", + " 0.000433\n", + " 0.000029\n", " \n", " \n", " 16\n", @@ -1000,8 +1020,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " fission\n", - " 0.000785\n", - " 0.000065\n", + " 0.000932\n", + " 0.000069\n", " \n", " \n", " 17\n", @@ -1010,8 +1030,8 @@ " 1\n", " (0.0e+00 - 6.3e-07)\n", " nu-fission\n", - " 0.001914\n", - " 0.000158\n", + " 0.002270\n", + " 0.000168\n", " \n", " \n", " 18\n", @@ -1020,8 +1040,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " fission\n", - " 0.000187\n", - " 0.000008\n", + " 0.000183\n", + " 0.000011\n", " \n", " \n", " 19\n", @@ -1030,8 +1050,8 @@ " 1\n", " (6.3e-07 - 2.0e+01)\n", " nu-fission\n", - " 0.000487\n", - " 0.000019\n", + " 0.000477\n", + " 0.000028\n", " \n", " \n", "\n", @@ -1040,26 +1060,26 @@ "text/plain": [ " mesh 1 energy [MeV] score mean std. dev.\n", " x y z \n", - "0 1 1 1 (0.0e+00 - 6.3e-07) fission 0.000224 0.000025\n", - "1 1 1 1 (0.0e+00 - 6.3e-07) nu-fission 0.000546 0.000062\n", - "2 1 1 1 (6.3e-07 - 2.0e+01) fission 0.000071 0.000004\n", - "3 1 1 1 (6.3e-07 - 2.0e+01) nu-fission 0.000187 0.000010\n", - "4 1 2 1 (0.0e+00 - 6.3e-07) fission 0.000392 0.000045\n", - "5 1 2 1 (0.0e+00 - 6.3e-07) nu-fission 0.000955 0.000110\n", - "6 1 2 1 (6.3e-07 - 2.0e+01) fission 0.000096 0.000005\n", - "7 1 2 1 (6.3e-07 - 2.0e+01) nu-fission 0.000252 0.000014\n", - "8 1 3 1 (0.0e+00 - 6.3e-07) fission 0.000551 0.000053\n", - "9 1 3 1 (0.0e+00 - 6.3e-07) nu-fission 0.001343 0.000130\n", - "10 1 3 1 (6.3e-07 - 2.0e+01) fission 0.000131 0.000008\n", - "11 1 3 1 (6.3e-07 - 2.0e+01) nu-fission 0.000343 0.000019\n", - "12 1 4 1 (0.0e+00 - 6.3e-07) fission 0.000688 0.000063\n", - "13 1 4 1 (0.0e+00 - 6.3e-07) nu-fission 0.001676 0.000153\n", - "14 1 4 1 (6.3e-07 - 2.0e+01) fission 0.000151 0.000007\n", - "15 1 4 1 (6.3e-07 - 2.0e+01) nu-fission 0.000395 0.000019\n", - "16 1 5 1 (0.0e+00 - 6.3e-07) fission 0.000785 0.000065\n", - "17 1 5 1 (0.0e+00 - 6.3e-07) nu-fission 0.001914 0.000158\n", - "18 1 5 1 (6.3e-07 - 2.0e+01) fission 0.000187 0.000008\n", - "19 1 5 1 (6.3e-07 - 2.0e+01) nu-fission 0.000487 0.000019" + "0 1 1 1 (0.0e+00 - 6.3e-07) fission 0.000202 0.000037\n", + "1 1 1 1 (0.0e+00 - 6.3e-07) nu-fission 0.000492 0.000090\n", + "2 1 1 1 (6.3e-07 - 2.0e+01) fission 0.000076 0.000004\n", + "3 1 1 1 (6.3e-07 - 2.0e+01) nu-fission 0.000204 0.000010\n", + "4 1 2 1 (0.0e+00 - 6.3e-07) fission 0.000375 0.000039\n", + "5 1 2 1 (0.0e+00 - 6.3e-07) nu-fission 0.000914 0.000094\n", + "6 1 2 1 (6.3e-07 - 2.0e+01) fission 0.000107 0.000013\n", + "7 1 2 1 (6.3e-07 - 2.0e+01) nu-fission 0.000278 0.000032\n", + "8 1 3 1 (0.0e+00 - 6.3e-07) fission 0.000564 0.000056\n", + "9 1 3 1 (0.0e+00 - 6.3e-07) nu-fission 0.001374 0.000137\n", + "10 1 3 1 (6.3e-07 - 2.0e+01) fission 0.000149 0.000007\n", + "11 1 3 1 (6.3e-07 - 2.0e+01) nu-fission 0.000388 0.000018\n", + "12 1 4 1 (0.0e+00 - 6.3e-07) fission 0.000669 0.000044\n", + "13 1 4 1 (0.0e+00 - 6.3e-07) nu-fission 0.001631 0.000108\n", + "14 1 4 1 (6.3e-07 - 2.0e+01) fission 0.000165 0.000011\n", + "15 1 4 1 (6.3e-07 - 2.0e+01) nu-fission 0.000433 0.000029\n", + "16 1 5 1 (0.0e+00 - 6.3e-07) fission 0.000932 0.000069\n", + "17 1 5 1 (0.0e+00 - 6.3e-07) nu-fission 0.002270 0.000168\n", + "18 1 5 1 (6.3e-07 - 2.0e+01) fission 0.000183 0.000011\n", + "19 1 5 1 (6.3e-07 - 2.0e+01) nu-fission 0.000477 0.000028" ] }, "execution_count": 25, @@ -1084,9 +1104,9 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEaCAYAAADtxAsqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu4nVV94PHvIQnqCPUYoUIuurlpiRdO7EwMo4XjYDHE\nllitUtuhHJwZGC21DjgCYptEx4JabZ7IJGJLITMdoNjBy4xouJQttGpiyQWqBEjK0VxqEAktRhQC\np3/81t77Pfvsc953n8u+nPP9PM9mv++719p7bfKed+21futdCyRJkiRJkiRJkiRJkiRJkiRJHeJZ\nYCuwDbgXOHWS378f+H85aU6fgs9thUFgboPjP2lxOTTDzW53ATSj/BRYnLbPBK4kLvSt9CbgSeBb\n48zfk56HJqc4hY32ea0ux1gOA55rdyE0tQ5rdwE0Y70IeDxt9wCfAu4H7gPelY6vAf4wbb8F+EZK\nez3wOeA7wIPAWxu8/1zgS8B2ooJ4DVACLgT+G9HieWNdnqOB24F/AP6M2q/7UvqcDamMC0cpbz/D\nWzpXA+el7UHgEyn9JuCEzGf+NbA5Pf59Ov4S4LZMWSqVVSOfSenuAI5K731v5vWT6vYr3g98l/h/\ndGM6dgRwXSrnduA30vF3p2P3A1dl3uMnwJ8QrcdTgf+Yvt9W4t/Ia4ykcTtEXEweAJ6g1up4B3GB\n7AF+Efg+8FLgBcTF8E3ADuC4lP564Na0fSKwG3gewy/an6VW4bwpfS7ASuDiUcp3NXBp2n4L8au5\nUmk8CywZo7zHMLLS+Czwu2n7EeDytH1uJt0NwBvS9suA76XttcBH0vbyTFnqPUdc0Enf97Np+2+A\nU9L2HwO/1yDvXmBO2v6F9PwJohKq6AXmpe/4EmAWcCewIvP5v5m2Twa+ktIArEvfVZLG5cnM9lKi\nQgD4U2Ag89r/An49bZ9KVDbZi951dem/QVwg+6ldjLcQF/uKHwBHEpXGJaOUbyvw8sz+j6lVGv+Y\nOf6ZUcp7OmNXGpXyzAEeS9uPps+tPHYDL0zb2fJXylLvELVf88dRqxx/m2ipHQbsBF7cIO/XgC8A\nv5M+E+DvqbWCKlYQFXXFe4BPp+1nqLWCLiIqosp32QH8UYPPVRczpqF2+TbRlXI00S+f7X7podZX\n/1rgR8D8nPdr1Jc+VpfOaEbLczAn3RDDL+AQLaXRVL5fD/B64OkmyjKa7P+3W4gK8m+IiuBAg/Rv\nBU4jKrwriC68Rp871r/PzxgeV9kAfLjJcquL2N+odvkl4vx7DLgHOCftHw38CtG//3KiK2kxcBa1\n7qEe4J3p+QTgeCLmkHUP8QsaogXyI6Kl8yTR4mjk76jFJ86k8a/zyntny3taKu8PgEXA4US3zn+o\ny3dO5vmbafs2IrZQUelSuptoLUB899HKchjx/4KU/p60/TNgI7CeaJnV6yG6w8rAZUSM6QgippNt\n1fWm73Y6te6p3yJad/XuJLqqjk77c9NnSNK4VGIalWG3Z2Ve+yS1wHLlIng78Gtp+3XptecRF8H1\n1ALhy1Oa04k+dYiL7BeJYO43gVen4yelY1upxRIqjiaCyfcDnwf2EV1JpfTZWY3KCxETeIi4YP81\nw7unrkqfvYmo6CAuxDel498l4gAQF9yNRBfe51P+Rt1TTxJdRfensr8k89pSorurUYtlNlHBVILb\nH0rHX0h0Rd1P/Bu9LR3/rUzaKzPv8y917/su4v/tdqKFswRJarPrgLdPwfseTi2IeyoRF5kso130\np9IHgdUt/kxNc8Y0pJqXATcTXT5PA/9lEt+71fdTfJEIjNd3kUmSJEnqJINEd899RBzhWuJekq8B\n/0zEX3pT2qVEHOUAERc4PfM+5xP3YvwLsAu4IPNaP7CHCP7vJ2IqA5P/VSRJU+0RoiI4mrjZbT8R\n8ziFCM7fSdyTMJ8YEbYs5Xtz2q8EqJdTu0nxNGIob+Umx37ivodVRGzlrPT6i6bkG0mSpswj1O68\nhhgZ9T8z+xcRcYQPETf7ZX2d2iiqel+kNuS2n5ifKzsUfj+OQFIH8T4Nqbj9me2n6vZ/Rtzn8HJi\nCO6BzOMNxDQjEK2HbxN3eB8gWh7ZYbI/ZviNij9N7yt1BEdPSeOXvf+hMjpqN/C/GR6rqHge8H+J\nSf2+TMxn9UXGd+e61Ba2NKTJUbnw/yUxLceZRFzi+US303ziPpDDiRjHc0Sr48xWF1SaCCsNafyG\n6raHiNFPK4j5lx4lpha5hKhUniTiFzcT08K/m2hxjPaeUldaRsxW+TC1aaPrrU2vb6c2EqRI3ksY\nPuVziegrrkw1sa5BHklSh5pFTKtcIubg2UbMmZ+1nNraBq8ngnxF8i4kRpVkp1coEXPbSJI6UF73\n1BLiwj9IjB+/idriKxVnE9MhQ0zE1kuMFMnL+xlqk6RJkrpAXqUxnxgNUrGHkesajJZm3hh5V6T9\n+plDobaQTJmRy3FKktoob8ht0aBcM0MGX0AECX+1Qf59RLfVAWIq7C8Br2L4im+SpDbJqzT2Ehfx\nioVEC2GsNAtSmjmj5D2BiF1sz6S/l+jOepTaCmZbiLl5TqJuiuoTTjhhaNeuXTlFlyRNwHagr9lM\ns4kLd4kYX54XCF9KLRBeJC8MD4QfRW09g+OJSqa3QZ4hTb6VK1e2uwhSUzxnpw6j9DTltTQOEXPq\nbEwX82uBB4AL0+vXpApjORH0PkjM4jlW3hEVQGb7NOCjROD8ufQ5T+SUUZLUIkWmEflaemRdU7d/\nURN56x2f2b4lPdQGg4OD7S6C1BTP2dbzjnBV9fU13X0ptdURR3jOtpqVhqo+8IEPtLsIUlOOOspz\nttWsNCRJhTk1uqrK5TL9/f3tLoY0pnI5HgCrV5eJSYShvz8emlpWGpK6SrZyGByEVavaV5aZyO4p\nVdnKULcplfrbXYQZx0pDUtfyd07rWWmoqlzpKJa6RrndBZhxrDQkSYV164L2aWoUSdJU6OnpgQZ1\nhC0NSV3LHtXWs9JQlTENdZvrry+3uwgzjpWGpK71wx+2uwQzjzENSV1l+B3hsHJlbHtH+OQaLaZh\npSGpa5VKcVe4Jt9EAuHLgB3Aw8Clo6RZm17fDixuIu8lxGJLczPHLk/pdwBnFiifJokxDXWDcjmm\nDlm1Cr7//XJ129O3NfIqjVnA1cTFfxHwbhov93oisZb3BcD6gnkXAr8KfD9zbBFwTnpeBqwrUEZJ\nUovkdU+dCqwkLuAAl6XnqzJpPgfcBfxV2t9BTDt5XE7eLwAfA74M/DLwONHKeA74RErzdWAVtXXH\nK+yekkRfH2zb1u5STE/j7Z6aD+zO7O9Jx4qkmTdG3hVp/76695qXjo/1eZKkNsmrNIr+nG8moP4C\n4MNEK6RIfpsULWJMQ93m8MPL7S7CjJO3nsZeIvZQsZDhLYFGaRakNHNGyXsCUCKC5pX09wKvH+W9\n9jYq2MDAAKVSCYDe3l76+vqqU3tXLn7uN7df0Snlcd/9Rvtr1pTZti2mRf/Od2BgIF4fGOinv7/9\n5evW/cr2YM5wtLwWwmzgQeAMYB+wmQhoP5BJsxy4KD0vBdak5yJ5AR6hFtNYBNwALCG6pe4gguz1\nrQ1jGpKMaUyh0WIaeS2NQ0SFsJEYDXUtcdG/ML1+DXArUWHsBA4C5+fkrZe9+n8PuDk9HwLeh91T\nkjKyN/dt315buc+b+1rDm/tUVXaNcHWZ+fPL7N3b3+5iTEvjbWlIUkfJtjT27bOl0Wq2NCR1rWOO\ncdLCqWJLQ9K0kG1p7N9vS6PVnKJDVdmhd1J3KLe7ADOO3VOqMhCubjN3bpnHH+9vdzGmJadGlzQt\nuJ5Ga1hpSJp2vLlv6hgIVy67p9QNht/cV2bVqn7Alkar2NJQlZWGOlX61dvApdRWUhjJ68T42T0l\nadqJCQrbXYrpaSLLvUpSR6rco6HWsdJQlfdpqPuU212AGcdKQ5JUmDENSdIIxjQkSRNWpNJYBuwA\nHibGtzWyNr2+HVhcIO/HUtptwJ3UlngtAU8BW9NjXYHyaZIY01C3qSz1qtbJqzRmAVcTF/9FxHKt\nJ9elWU4syXoScAGwvkDeTwKnAH3Al4CVmffbSVQ8i4mV+ySpoQ0b2l2CmSev0lhCXMQHgWeAm4AV\ndWnOBir/dJuAXuCYnLxPZvIfATw2nsJrcnljn7pPf7sLMOPkVRrzgd2Z/T3pWJE083Lyfhz4AXAe\ncFXm+HFE11QZeGNO+SRJLZRXaRQdojSeUVhXAC8Drgf+NB3bR8Q3FgMXAzcAR47jvTUOxjTUfcrt\nLsCMkzdh4V5qQWrS9p6cNAtSmjkF8kJUDLem7afTA2ALsIuIlWypzzQwMECpVAKgt7eXvr6+avdK\n5eLnfnP7FZ1SHvfdd7+1f//lcpnBwUHGktdCmA08CJxBtAI2EwHtBzJplgMXpeelwJr0PFbek4gR\nVQC/T8Q/zgWOAg4AzwLHA3cDrwaeqCuX92lIYtUqpxKZKuOdGv0QUSFsJEZDXUtc9C9Mr19DtBKW\nE0Hvg8D5OXkBrgReSVQOu4D3puOnAR8lAufPpc+przAkCbDCaAfvCFdV2anR1WU8Z6eOd4RLkibM\nloYkaQRbGpKkCbPSUFV26J3UDZx7qvWsNCR1Leeeaj1jGpK6Vk8PeCmYGsY0JEkTZqWhKmMa6j7l\ndhdgxrHSkCQVZqWhKu+sVbdZubK/3UWYcQyES5JGMBCuXMY01G08Z1vPSkOSVJjdU5KkEeyekiRN\nWJFKYxmwg1hp79JR0qxNr28n1vfOy/uxlHYbcCfDl4W9PKXfAZxZoHyaJPYPq9s491Tr5VUas4Cr\niYv/ImK51pPr0iwHTiSWcL0AWF8g7yeBU4A+4EvAynR8EXBOel4GrCtQRkkzlHNPtV7eBXkJsYzr\nILEE603Airo0ZwOVf7pNQC9wTE7eJzP5jwAeS9srgBtT+sGUf0nhb6MJ8T4NdZ/+dhdgxslbI3w+\nsDuzvwd4fYE084F5OXk/DpwLPEWtYpgHfLvBe0mSOkBeS6PoEKXxjMK6AngZcB2wZhLKoAkypqHu\nU253AWacvJbGXoYHqRcSv/7HSrMgpZlTIC/ADcCtY7zX3kYFGxgYoFQqAdDb20tfX1+1e6Vy8XO/\nuf2KTimP++6739q//3K5zODgIGPJayHMBh4EzgD2AZuJgPYDmTTLgYvS81Ki1bA0J+9JxAgpgN8n\nuqfOJQLgN6T9+cAdRJC9vrXhfRqSWLUqHpp8o92nkdfSOERUCBuJ0VDXEhf9C9Pr1xCthOVE0Pog\ncH5OXoArgVcCzwK7gPem498Dbk7Ph4D3YfeUpFFYYbSed4SrqlwuV5usUjfwnJ063hEuSZowWxqS\npBFsaUiSJsxKQ1XZoXdSN3Duqdaz0pDUtZx7qvWMaUjqWj094KVgahjTkCRNmJWGqoxpqPuU212A\nGcdKQ5JUmJWGqryzVt1m5cr+dhdhxjEQLkkawUC4chnTULfxnG09Kw1JUmF2T0mSRrB7SpI0YUUq\njWXADmKlvUtHSbM2vb4dWFwg76eIBZm2A7cAL0rHS8BTwNb0WFegfJok9g+r2zj3VOvlVRqzgKuJ\ni/8iYrnWk+vSLCeWZD0JuABYXyDvbcCrgFOAh4DLM++3k6h4FhMr90lSQ8491Xp5lcYS4iI+CDwD\n3ASsqEtzNlD5p9sE9ALH5OS9HXguk2fBOMuvSeR9Guo+/e0uwIyTV2nMB3Zn9vekY0XSzCuQF+A9\nxDrjFccRXVNl4I055ZMktVBepVF0iNJ4R2FdATwN3JD29wELia6pi9PxI8f53mqSMQ11n3K7CzDj\nzM55fS9xEa9YSLQYxkqzIKWZk5N3gIiHnJE59nR6AGwBdhGxki31BRsYGKBUKgHQ29tLX19ftXul\ncvFzv7n9ik4pj/vuu9/av/9yuczg4CBjyWshzAYeJC7s+4DNRED7gUya5cBF6XkpsCY9j5V3GfBp\n4HTgscx7HQUcAJ4FjgfuBl4NPFFXLu/TkMSqVfHQ5BvtPo0i3UpnERXBLOBa4ErgwvTaNem5Mkrq\nIHA+tZZBo7wQQ3APBx5P+98iRkq9A1hNBM6fA/4I+GqDMllpSNIUmkil0YmsNKZAuVyuNlmlbuA5\nO3W8I1ySNGG2NCRJI9jSkCRNmJWGqrJD76Ru4NxTrWelIalrOfdU6xnTkNS1enrAS8HUMKYhSZow\nKw1VGdNQ9ym3uwAzjpWGJKkwKw1VeWetus3Klf3tLsKMYyBckjSCgXDlMqahbuM523pWGpKkwuye\nkiSNYPeUJGnCilQay4AdxMJJl46SZm16fTuxvnde3k8RK/htB24BXpR57fKUfgdwZoHyaZLYP6xu\n49xTrZdXacyitirfImK51pPr0iwHTiTW8r4AWF8g723Aq4BTgIeIioKU7pz0vAxYV6CMkmYo555q\nvbwL8hJgJzBILMF6E7CiLs3ZQOWfbhPQCxyTk/d2YjnXSp4FaXsFcGNKP5jyL2nmC2n8vE9D3ae/\n3QWYcfIqjfnA7sz+nnSsSJp5BfICvAe4NW3PS+ny8kiS2iCv0ig6RGm8o7CuAJ4GbpiEMmiCjGmo\n+5TbXYAZZ3bO63uBhZn9hQxvCTRKsyClmZOTd4CIh5yR8157GxVsYGCAUqkEQG9vL319fdXulcrF\nz/3m9is6pTzuu+9+a//+y+Uyg4ODjCWvhTAbeJC4sO8DNhMB7QcyaZYDF6XnpcCa9DxW3mXAp4HT\ngccy77WIaHUsIbql7iCC7PWtDe/TkMSqVfHQ5BvtPo0i3UpnERXBLOBa4ErgwvTaNem5MkrqIHA+\nsGWMvBBDag8HHk/73wLel7Y/TMQ5DgF/AGxsUCYrDUmaQhOpNDqRlcYUKJfL1Sar1A08Z6eOd4RL\nkibMloYkaQRbGpKkCbPSUNWaNeV2F0FqinNPtZ6Vhqq2bWt3CaTmOPdU61lpqKpU6m93EaQm9be7\nADNO3h3hmubK5XgArF5dO97fHw9JynL0lKqWLSvz9a/3t7sYUmE9PWWGhvrbXYxpydFTyrVzZ7tL\nIKnTWWkoo7/dBdAMNncu9PQ094D+pvPMndvub9rdjGnMcNmYxq5dtcnfjGmo1Q4cgFb0Ovd0a6d8\nh7CloYxyuwsgNSU7rbdaw0pDklSYlYYy+ttdAKkpznDbelYakqTCilQay4AdxMJJl46SZm16fTuw\nuEDedwLfBZ4FXpc5XgKeAramx7oC5dOkKbe7AFJTjGm0Xt7oqVnEqnxvJtbq/g7wFUYu93oicBLw\nemA9sdzrWHnvB36D2sp/WTsZXvFoCm3bVhs9BbXt3l5HT0kaKa/SWEJcxAfT/k3ACoZXGmcDlWnD\nNgG9wDHAcWPk3TGxYmuy9PXBE0/E9je+0V+tKPr62lYkqTBjGq2XV2nMB3Zn9vcQrYm8NPOBeQXy\nNnIc0TX1z8BHgL8tkEdN6Bl1oPo/sXr1scDweagqnLpFUl5Mo+hVYrJul9kHLCS6py4GbgCOnKT3\nVjI0NNTwATtGfc0KQ53ImEbr5bU09hIX8YqFRIthrDQLUpo5BfLWezo9ALYAu4hYyZb6hAMDA5RK\nJQB6e3vp6+urNlUrJ5L7ze1XdEp53J9Z+5Uh31P9eVCmXG7/9+20/cr24OAgY8lrIcwGHgTOIFoB\nm4F3MzIQflF6XgqsSc9F8t4FfBC4N+0fBRwgRlUdD9wNvBp4oq5cznI7BXp6WjONg9RIq84/z/Ni\nRpvlNq+lcYioEDYSo6GuJS76F6bXrwFuJSqMncBB4PycvBAjp9YSlcRXiRjGWcDpwGrgGeC59Dn1\nFYamyMqV7S6BpE7XrVN32dKYAuVyOdOEl1prPC2A8ZyztjSKcT0NSdKE2dKQ1BGMaXQWWxqSpAmz\n0lBVduid1A08Z1vPSkNV11/f7hJI6nTGNFRlX6/ayZhGZzGmIUmaMCsNZZTbXQCpKcY0Ws9KQ5JU\nmDENVdnXq3YyptFZjGkol3NPScpjpaGq/v5yu4sgNcWYRutZaUiSCjOmIakjGNPoLMY0JEkTVqTS\nWAbsAB4GLh0lzdr0+nZife+8vO8Evkus0Pe6uve6PKXfAZxZoHyaJPYPq9t4zrZeXqUxC7iauPgv\nIpZrPbkuzXLgRGIt7wuA9QXy3k+s3nd33XstAs5Jz8uAdQXKqEni3FOS8uRdkJcQy7gOEkuw3gSs\nqEtzNrAhbW8CeoFjcvLuAB5q8HkrgBtT+sGUf0mxr6KJ2rChv91FkJriSpOtl1dpzAd2Z/b3pGNF\n0swrkLfevJSumTySpBbJqzSKjjGYylFYjnNomXK7CyA1xZhG683OeX0vsDCzv5DhLYFGaRakNHMK\n5M37vAXp2AgDAwOUSiUAent76evrqzZVKyeS+83tV3RKedyfWfvQms+DMuVy+79vp+1XtgcHBxlL\nXgthNvAgcAawD9hMBLQfyKRZDlyUnpcCa9Jzkbx3AR8E7k37i4AbiDjGfOAOIshe39rwPo0p4Ph1\ntZP3aXSW0e7TyGtpHCIqhI3EaKhriYv+hen1a4BbiQpjJ3AQOD8nL8TIqbXAUcBXga3AWcD3gJvT\n8yHgfdg91TLOPSUpj3eEq6pcLmea8FJrjacFMJ5z1pZGMd4RLkmaMFsakjqCMY3OYktDkjRhVhqq\nyg69k7qB52zrWWmoyrmnJOUxpqEq+3rVTsY0OosxDUnShFlpKKPc7gJITTGm0XpWGpKkwoxpqMq+\nXrVVTwsvR57oucY795S61Ny5cOBA8/ma/bt98Yvh8ceb/xypXg9DrQuET/3HTFt2T01TBw7Ej6lm\nHnfdVW46z3gqJmmyGNNoPSsNSVJhxjSmKce8q9t4znYW79OQJE1YkUpjGbADeBi4dJQ0a9Pr24HF\nBfLOBW4HHgJuA3rT8RLwFLEo01ZgXYHyaZLYP6xu4znbenmVxizgauLiv4hYrvXkujTLiSVZTwIu\nANYXyHsZUWm8Argz7VfsJCqexcTKfZKkDpFXaSwhLuKDwDPATcCKujRnAxvS9iai1XBMTt5sng3A\n28ZZfk0iV+1Tt/Gcbb28SmM+sDuzvycdK5Jm3hh5XwrsT9v7037FcUTXVBl4Y075JEktlFdpFB1j\nUGQUVs8o7zeUOb4PWEh0TV0M3AAcWbAMmiD7h9VtPGdbL++O8L3ERbxiIdFiGCvNgpRmToPje9P2\nfqIL64fAscCj6fjT6QGwBdhFxEq21BdsYGCAUqkEQG9vL319fdWmauVEmun70Gx6Oqr87s+s/WbP\n1/HuQ5lyuf3ft9P2K9uDg4OMJa+FMBt4EDiDaAVsJgLaD2TSLAcuSs9LgTXpeay8nwR+DHyCCIL3\npuejgAPAs8DxwN3Aq4En6srlfRo5HPOubuM521nGO/fUIaJC2EiMhrqWuOhfmF6/BriVqDB2AgeB\n83PyAlwF3Az8JyJQ/q50/DTgo0Tg/Ln0OfUVhiSpTbwjfJoaz6+pcrmcacJP3edIjXjOdhbvCJck\nTZgtjWnK/mF1m1Ytp+F0/sW4noakjjaeHx/+aGk9u6dUlR16J3WHcrsLMONYaUiSCjOmMU0Z09BM\n4Pk3dYxpzDBD9LTkJ8FQ5r+Spj+7p6apHppc7HtoiPJddzWdp8cKQ2103nnldhdhxrHSkNS1Bgba\nXYKZx5jGNGVMQ9JEeEe4JGnCrDRU5X0a6jaes61npSFJKswht9NY83P59Df9GS9+cdNZpElTLvfj\nMuGtZSBcVQa11W08Z6fORALhy4AdwMPApaOkWZte306s752Xdy5wO/AQcBuxcl/F5Sn9DuDMAuXT\npCm3uwBSk8rtLsCMk1dpzAKuJi7+i4jlWk+uS7McOJFYy/sCYH2BvJcRlcYrgDvTPindOel5GbCu\nQBk1aba1uwBSkzxnWy3vgryEWMZ1kFiC9SZgRV2as4ENaXsT0Wo4JidvNs8G4G1pewVwY0o/mPIv\naeYLaSJcWVfdxnO21fIqjfnA7sz+nnSsSJp5Y+R9KbA/be9P+6Q8e3I+T9IM09PT0/ABq0d9radV\nqzrNMHmVRtEQU5F/nZ5R3m8o53MMc00y/wDVbYaGhho+zjvvvFFfc7DM1MgbcrsXWJjZX8jwlkCj\nNAtSmjkNju9N2/uJLqwfAscCj47xXnsZaXtPT88pOWXXJLPiUCfasGFDfiKNx/bxZJoN7AJKwOFE\n1KlRIPzWtL0U+HaBvJ+kNprqMuCqtL0opTscOC7l90olSV3kLOBBIih9eTp2YXpUXJ1e3w68Licv\nxJDbO2g85PbDKf0O4C2T9SUkSZIkSRP0fuB7wOPAh8aR/+8mtzjShPwS0W19L3A84zs/VwNnTGah\npOnkAWL4sjQdXAZc0e5CSNPV54CfA/cBHwA+m46/E7if+MX2jXTsVcQNmVuJeNQJ6fhP0nMP8KmU\n7z7gXel4PzF/wxeICuovp+KLaNooEefJ54F/ADYCzyfOoV9OaY4CHmmQdznwT8SIzDvTscr5eSxw\nN3H+3g+8gbiN4Hpq5+wfpLTXA+9I22cAW9Lr1xIDbyBuKF5FtGjuA17Z7BeVutUjxGCD84h5wSD+\nCI5N27+QntcCv522ZxN/yABPpud3EAMVeoBfBL5PDJXuJ27FnZde+ybxBys1UiJmeXht2v8r4HeA\nu6gNnBmt0gBYCVyc2a+cn5cQA2cgzsMjiErotkzayrl+HfB24hz/ATH1EcSMFJWK5RHg99L2e4E/\ny/tiM5HzOk1fPZkHRD/wBuA/U7s/51vEH92HiD/sn9W9xxuBG4gbLB8lWij/Lu1vBval7W0pvzSa\nR4gfLhC/5EtN5m809H4zcD5RqbyWaIHsIuIea4nRl09m0vcQrYdHiBGaEH8Tp2XS3JKet4yjjDOC\nlcb0lr0l9r3AR4ibJ+8lWiI3Ar8OPEXca/OmBvnr/1gr7/nzzLFncW0Wja3R+XKImNgUaq1ciFbB\nVuD/57znPcCvEDcAXw+cS7SATyG6vv4r8Od1eepvE6+fqaJSTs/pUVhpTG/ZC/4JxC+zlcCPiLvt\njyP6cT8LfBl4TV3+e4hZhw8DjiZ+kW3GGy41OQapxTR+M3P8fGKJhV/Lyf8y4lz+8/R4HfASoiK6\nBfhDhi9EFZRgAAABvklEQVTVMETcN1aiFr87l1qMTwVYk05PQ3UPiLvwTyIu+HcQXQWXEn80zxDB\nxo9n8gN8ETiVCJIPAf+d6KY6mZG/2JzoR2NpdL78CXAzsaTCVxukGS1/ZftNwAeJ8/dJ4HeJCU6v\no/aD+DKG+zlRKX2BuP5tJgaPNPoMz2lJkiRJkiRJkiRJkiRJkiRJkiRJmqa8wVaSprkXEncwbyOm\n4H4XMZHjN9OxTSnN84m7k+8jJsDrT/kHgK8QU33fBfwb4C9Svi3A2S35FpKklngHsTZExS8Qs6tW\n5lE6gpj/6BJqE+a9kpha/nlEpbEb6E2v/TExVTjp2INERSJJmgZOIqbXvoqYPv41wN82SHcLtdYF\nxIJBryHWOfmLzPG/J1osW9NjEBcAUoeyP1Vq3sPE7KlvBf4H0cU0mtFmBD5Yt//29L5SR3NqdKl5\nxxILVv0fYqbWJcSKhv82vX4k0T11D7Vup1cQU3nvYGRFshF4f2Z/MVKHsqUhNe81xNrpzwFPEwtc\nHUasS/IC4KfAm4F1wHoiEH6I6JZ6hpHTbn8MWJPSHQb8IwbDJUmSJEmSJEmSJEmSJEmSJEmSJEmS\nBPCvjMC6bD6xSh4AAAAASUVORK5CYII=\n", + "image/png": "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\nkiRJEsA/A3sng0v+IomuAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1109,7 +1129,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1118,9 +1138,9 @@ }, { "data": { - "image/png": "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\nefX/AdmeWI23zkQnAAAAAElFTkSuQmCC\n", + "image/png": "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\n/wfC21DgNNvIcQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1208,144 +1228,144 @@ " 10000\n", " U-235\n", " scatter-Y0,0\n", - " 0.038330\n", - " 0.001119\n", + " 0.037095\n", + " 0.001150\n", " \n", " \n", " 1\n", " 10000\n", " U-235\n", " scatter-Y1,-1\n", - " 0.000008\n", - " 0.000341\n", + " 0.000266\n", + " 0.000323\n", " \n", " \n", " 2\n", " 10000\n", " U-235\n", " scatter-Y1,0\n", - " -0.000342\n", - " 0.000342\n", + " -0.000417\n", + " 0.000274\n", " \n", " \n", " 3\n", " 10000\n", " U-235\n", " scatter-Y1,1\n", - " 0.000201\n", - " 0.000262\n", + " -0.000228\n", + " 0.000237\n", " \n", " \n", " 4\n", " 10000\n", " U-235\n", " scatter-Y2,-2\n", - " 0.000136\n", - " 0.000152\n", + " 0.000026\n", + " 0.000199\n", " \n", " \n", " 5\n", " 10000\n", " U-235\n", " scatter-Y2,-1\n", - " 0.000042\n", - " 0.000131\n", + " -0.000115\n", + " 0.000185\n", " \n", " \n", " 6\n", " 10000\n", " U-235\n", " scatter-Y2,0\n", - " 0.000303\n", - " 0.000185\n", + " 0.000151\n", + " 0.000159\n", " \n", " \n", " 7\n", " 10000\n", " U-235\n", " scatter-Y2,1\n", - " -0.000407\n", - " 0.000184\n", + " -0.000122\n", + " 0.000280\n", " \n", " \n", " 8\n", " 10000\n", " U-235\n", " scatter-Y2,2\n", - " -0.000145\n", - " 0.000120\n", + " 0.000008\n", + " 0.000181\n", " \n", " \n", " 9\n", " 10000\n", " U-238\n", " scatter-Y0,0\n", - " 2.319322\n", - " 0.006166\n", + " 2.328632\n", + " 0.013107\n", " \n", " \n", " 10\n", " 10000\n", " U-238\n", " scatter-Y1,-1\n", - " -0.023638\n", - " 0.001940\n", + " 0.024530\n", + " 0.002272\n", " \n", " \n", " 11\n", " 10000\n", " U-238\n", " scatter-Y1,0\n", - " -0.003463\n", - " 0.001892\n", + " -0.000059\n", + " 0.002804\n", " \n", " \n", " 12\n", " 10000\n", " U-238\n", " scatter-Y1,1\n", - " 0.025099\n", - " 0.002270\n", + " -0.027990\n", + " 0.002536\n", " \n", " \n", " 13\n", " 10000\n", " U-238\n", " scatter-Y2,-2\n", - " -0.000617\n", - " 0.001197\n", + " -0.004861\n", + " 0.001575\n", " \n", " \n", " 14\n", " 10000\n", " U-238\n", " scatter-Y2,-1\n", - " 0.002549\n", - " 0.001187\n", + " 0.000557\n", + " 0.002018\n", " \n", " \n", " 15\n", " 10000\n", " U-238\n", " scatter-Y2,0\n", - " 0.007121\n", - " 0.001646\n", + " 0.006236\n", + " 0.001627\n", " \n", " \n", " 16\n", " 10000\n", " U-238\n", " scatter-Y2,1\n", - " -0.000058\n", - " 0.001323\n", + " -0.000648\n", + " 0.001551\n", " \n", " \n", " 17\n", " 10000\n", " U-238\n", " scatter-Y2,2\n", - " -0.002235\n", - " 0.000867\n", + " -0.001031\n", + " 0.001310\n", " \n", " \n", "\n", @@ -1353,24 +1373,24 @@ ], "text/plain": [ " cell nuclide score mean std. dev.\n", - "0 10000 U-235 scatter-Y0,0 0.038330 0.001119\n", - "1 10000 U-235 scatter-Y1,-1 0.000008 0.000341\n", - "2 10000 U-235 scatter-Y1,0 -0.000342 0.000342\n", - "3 10000 U-235 scatter-Y1,1 0.000201 0.000262\n", - "4 10000 U-235 scatter-Y2,-2 0.000136 0.000152\n", - "5 10000 U-235 scatter-Y2,-1 0.000042 0.000131\n", - "6 10000 U-235 scatter-Y2,0 0.000303 0.000185\n", - "7 10000 U-235 scatter-Y2,1 -0.000407 0.000184\n", - "8 10000 U-235 scatter-Y2,2 -0.000145 0.000120\n", - "9 10000 U-238 scatter-Y0,0 2.319322 0.006166\n", - "10 10000 U-238 scatter-Y1,-1 -0.023638 0.001940\n", - "11 10000 U-238 scatter-Y1,0 -0.003463 0.001892\n", - "12 10000 U-238 scatter-Y1,1 0.025099 0.002270\n", - "13 10000 U-238 scatter-Y2,-2 -0.000617 0.001197\n", - "14 10000 U-238 scatter-Y2,-1 0.002549 0.001187\n", - "15 10000 U-238 scatter-Y2,0 0.007121 0.001646\n", - "16 10000 U-238 scatter-Y2,1 -0.000058 0.001323\n", - "17 10000 U-238 scatter-Y2,2 -0.002235 0.000867" + "0 10000 U-235 scatter-Y0,0 0.037095 0.001150\n", + "1 10000 U-235 scatter-Y1,-1 0.000266 0.000323\n", + "2 10000 U-235 scatter-Y1,0 -0.000417 0.000274\n", + "3 10000 U-235 scatter-Y1,1 -0.000228 0.000237\n", + "4 10000 U-235 scatter-Y2,-2 0.000026 0.000199\n", + "5 10000 U-235 scatter-Y2,-1 -0.000115 0.000185\n", + "6 10000 U-235 scatter-Y2,0 0.000151 0.000159\n", + "7 10000 U-235 scatter-Y2,1 -0.000122 0.000280\n", + "8 10000 U-235 scatter-Y2,2 0.000008 0.000181\n", + "9 10000 U-238 scatter-Y0,0 2.328632 0.013107\n", + "10 10000 U-238 scatter-Y1,-1 0.024530 0.002272\n", + "11 10000 U-238 scatter-Y1,0 -0.000059 0.002804\n", + "12 10000 U-238 scatter-Y1,1 -0.027990 0.002536\n", + "13 10000 U-238 scatter-Y2,-2 -0.004861 0.001575\n", + "14 10000 U-238 scatter-Y2,-1 0.000557 0.002018\n", + "15 10000 U-238 scatter-Y2,0 0.006236 0.001627\n", + "16 10000 U-238 scatter-Y2,1 -0.000648 0.001551\n", + "17 10000 U-238 scatter-Y2,2 -0.001031 0.001310" ] }, "execution_count": 29, @@ -1404,8 +1424,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.00086668 0.0061658 ]\n", - " [ 0.00011981 0.00111862]]]\n" + "[[[ 0.00131009 0.01310707]\n", + " [ 0.00018089 0.00114976]]]\n" ] } ], @@ -1473,7 +1493,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[[ 0.03658762]]]\n" + "[[[ 0.04537029]]]\n" ] } ], @@ -1518,141 +1538,141 @@ " 558\n", " 279\n", " absorption\n", - " 0.000081\n", - " 0.000008\n", + " 0.000093\n", + " 0.000013\n", " \n", " \n", " 559\n", " 279\n", " scatter\n", - " 0.013109\n", - " 0.000358\n", + " 0.013504\n", + " 0.000805\n", " \n", " \n", " 560\n", " 280\n", " absorption\n", - " 0.000088\n", + " 0.000084\n", " 0.000010\n", " \n", " \n", " 561\n", " 280\n", " scatter\n", - " 0.014395\n", - " 0.000586\n", + " 0.014215\n", + " 0.000612\n", " \n", " \n", " 562\n", " 281\n", " absorption\n", - " 0.000097\n", - " 0.000010\n", + " 0.000091\n", + " 0.000008\n", " \n", " \n", " 563\n", " 281\n", " scatter\n", - " 0.014637\n", - " 0.000427\n", + " 0.014545\n", + " 0.000590\n", " \n", " \n", " 564\n", " 282\n", " absorption\n", - " 0.000107\n", - " 0.000009\n", + " 0.000112\n", + " 0.000012\n", " \n", " \n", " 565\n", " 282\n", " scatter\n", - " 0.015683\n", - " 0.000552\n", + " 0.016321\n", + " 0.000729\n", " \n", " \n", " 566\n", " 283\n", " absorption\n", - " 0.000110\n", - " 0.000009\n", + " 0.000092\n", + " 0.000007\n", " \n", " \n", " 567\n", " 283\n", " scatter\n", - " 0.016293\n", - " 0.000627\n", + " 0.016163\n", + " 0.000661\n", " \n", " \n", " 568\n", " 284\n", " absorption\n", - " 0.000111\n", - " 0.000007\n", + " 0.000104\n", + " 0.000011\n", " \n", " \n", " 569\n", " 284\n", " scatter\n", - " 0.017032\n", - " 0.000445\n", + " 0.017384\n", + " 0.000599\n", " \n", " \n", " 570\n", " 285\n", " absorption\n", - " 0.000112\n", - " 0.000006\n", + " 0.000111\n", + " 0.000011\n", " \n", " \n", " 571\n", " 285\n", " scatter\n", - " 0.017666\n", - " 0.000425\n", + " 0.018015\n", + " 0.000774\n", " \n", " \n", " 572\n", " 286\n", " absorption\n", - " 0.000123\n", - " 0.000011\n", + " 0.000125\n", + " 0.000012\n", " \n", " \n", " 573\n", " 286\n", " scatter\n", - " 0.017706\n", - " 0.000597\n", + " 0.018294\n", + " 0.000828\n", " \n", " \n", " 574\n", " 287\n", " absorption\n", - " 0.000108\n", - " 0.000011\n", + " 0.000119\n", + " 0.000013\n", " \n", " \n", " 575\n", " 287\n", " scatter\n", - " 0.017339\n", - " 0.000664\n", + " 0.017483\n", + " 0.000757\n", " \n", " \n", " 576\n", " 288\n", " absorption\n", - " 0.000129\n", - " 0.000011\n", + " 0.000113\n", + " 0.000014\n", " \n", " \n", " 577\n", " 288\n", " scatter\n", - " 0.018452\n", - " 0.000523\n", + " 0.018248\n", + " 0.000782\n", " \n", " \n", "\n", @@ -1660,26 +1680,26 @@ ], "text/plain": [ " distribcell score mean std. dev.\n", - "558 279 absorption 0.000081 0.000008\n", - "559 279 scatter 0.013109 0.000358\n", - "560 280 absorption 0.000088 0.000010\n", - "561 280 scatter 0.014395 0.000586\n", - "562 281 absorption 0.000097 0.000010\n", - "563 281 scatter 0.014637 0.000427\n", - "564 282 absorption 0.000107 0.000009\n", - "565 282 scatter 0.015683 0.000552\n", - "566 283 absorption 0.000110 0.000009\n", - "567 283 scatter 0.016293 0.000627\n", - "568 284 absorption 0.000111 0.000007\n", - "569 284 scatter 0.017032 0.000445\n", - "570 285 absorption 0.000112 0.000006\n", - "571 285 scatter 0.017666 0.000425\n", - "572 286 absorption 0.000123 0.000011\n", - "573 286 scatter 0.017706 0.000597\n", - "574 287 absorption 0.000108 0.000011\n", - "575 287 scatter 0.017339 0.000664\n", - "576 288 absorption 0.000129 0.000011\n", - "577 288 scatter 0.018452 0.000523" + "558 279 absorption 0.000093 0.000013\n", + "559 279 scatter 0.013504 0.000805\n", + "560 280 absorption 0.000084 0.000010\n", + "561 280 scatter 0.014215 0.000612\n", + "562 281 absorption 0.000091 0.000008\n", + "563 281 scatter 0.014545 0.000590\n", + "564 282 absorption 0.000112 0.000012\n", + "565 282 scatter 0.016321 0.000729\n", + "566 283 absorption 0.000092 0.000007\n", + "567 283 scatter 0.016163 0.000661\n", + "568 284 absorption 0.000104 0.000011\n", + "569 284 scatter 0.017384 0.000599\n", + "570 285 absorption 0.000111 0.000011\n", + "571 285 scatter 0.018015 0.000774\n", + "572 286 absorption 0.000125 0.000012\n", + "573 286 scatter 0.018294 0.000828\n", + "574 287 absorption 0.000119 0.000013\n", + "575 287 scatter 0.017483 0.000757\n", + "576 288 absorption 0.000113 0.000014\n", + "577 288 scatter 0.018248 0.000782" ] }, "execution_count": 33, @@ -1766,8 +1786,8 @@ " 10000\n", " 0\n", " absorption\n", - " 0.000131\n", - " 0.000014\n", + " 0.000123\n", + " 0.000012\n", " \n", " \n", " 1\n", @@ -1781,8 +1801,8 @@ " 10000\n", " 0\n", " scatter\n", - " 0.018582\n", - " 0.000680\n", + " 0.017805\n", + " 0.000808\n", " \n", " \n", " 2\n", @@ -1796,8 +1816,8 @@ " 10000\n", " 1\n", " absorption\n", - " 0.000220\n", - " 0.000023\n", + " 0.000217\n", + " 0.000020\n", " \n", " \n", " 3\n", @@ -1811,8 +1831,8 @@ " 10000\n", " 1\n", " scatter\n", - " 0.028711\n", - " 0.001186\n", + " 0.028867\n", + " 0.001263\n", " \n", " \n", " 4\n", @@ -1826,8 +1846,8 @@ " 10000\n", " 2\n", " absorption\n", - " 0.000295\n", - " 0.000022\n", + " 0.000318\n", + " 0.000020\n", " \n", " \n", " 5\n", @@ -1841,8 +1861,8 @@ " 10000\n", " 2\n", " scatter\n", - " 0.038782\n", - " 0.001084\n", + " 0.040493\n", + " 0.001269\n", " \n", " \n", " 6\n", @@ -1856,8 +1876,8 @@ " 10000\n", " 3\n", " absorption\n", - " 0.000331\n", - " 0.000022\n", + " 0.000386\n", + " 0.000018\n", " \n", " \n", " 7\n", @@ -1871,8 +1891,8 @@ " 10000\n", " 3\n", " scatter\n", - " 0.045772\n", - " 0.001084\n", + " 0.048576\n", + " 0.001337\n", " \n", " \n", " 8\n", @@ -1886,7 +1906,7 @@ " 10000\n", " 4\n", " absorption\n", - " 0.000419\n", + " 0.000501\n", " 0.000026\n", " \n", " \n", @@ -1901,8 +1921,8 @@ " 10000\n", " 4\n", " scatter\n", - " 0.055975\n", - " 0.001344\n", + " 0.057063\n", + " 0.001715\n", " \n", " \n", " 10\n", @@ -1916,8 +1936,8 @@ " 10000\n", " 5\n", " absorption\n", - " 0.000514\n", - " 0.000024\n", + " 0.000484\n", + " 0.000026\n", " \n", " \n", " 11\n", @@ -1931,8 +1951,8 @@ " 10000\n", " 5\n", " scatter\n", - " 0.063289\n", - " 0.001605\n", + " 0.060822\n", + " 0.001581\n", " \n", " \n", " 12\n", @@ -1946,8 +1966,8 @@ " 10000\n", " 6\n", " absorption\n", - " 0.000591\n", - " 0.000027\n", + " 0.000532\n", + " 0.000039\n", " \n", " \n", " 13\n", @@ -1961,8 +1981,8 @@ " 10000\n", " 6\n", " scatter\n", - " 0.071011\n", - " 0.002058\n", + " 0.069101\n", + " 0.002249\n", " \n", " \n", " 14\n", @@ -1976,8 +1996,8 @@ " 10000\n", " 7\n", " absorption\n", - " 0.000671\n", - " 0.000036\n", + " 0.000577\n", + " 0.000039\n", " \n", " \n", " 15\n", @@ -1991,8 +2011,8 @@ " 10000\n", " 7\n", " scatter\n", - " 0.077891\n", - " 0.001952\n", + " 0.076722\n", + " 0.002335\n", " \n", " \n", " 16\n", @@ -2006,8 +2026,8 @@ " 10000\n", " 8\n", " absorption\n", - " 0.000721\n", - " 0.000031\n", + " 0.000649\n", + " 0.000039\n", " \n", " \n", " 17\n", @@ -2021,8 +2041,8 @@ " 10000\n", " 8\n", " scatter\n", - " 0.086393\n", - " 0.001722\n", + " 0.081564\n", + " 0.001610\n", " \n", " \n", " 18\n", @@ -2036,8 +2056,8 @@ " 10000\n", " 9\n", " absorption\n", - " 0.000748\n", - " 0.000033\n", + " 0.000680\n", + " 0.000032\n", " \n", " \n", " 19\n", @@ -2051,8 +2071,8 @@ " 10000\n", " 9\n", " scatter\n", - " 0.090861\n", - " 0.001669\n", + " 0.087715\n", + " 0.001959\n", " \n", " \n", "\n", @@ -2086,26 +2106,26 @@ " mean std. dev. \n", " \n", " \n", - "0 0.000131 0.000014 \n", - "1 0.018582 0.000680 \n", - "2 0.000220 0.000023 \n", - "3 0.028711 0.001186 \n", - "4 0.000295 0.000022 \n", - "5 0.038782 0.001084 \n", - "6 0.000331 0.000022 \n", - "7 0.045772 0.001084 \n", - "8 0.000419 0.000026 \n", - "9 0.055975 0.001344 \n", - "10 0.000514 0.000024 \n", - "11 0.063289 0.001605 \n", - "12 0.000591 0.000027 \n", - "13 0.071011 0.002058 \n", - "14 0.000671 0.000036 \n", - "15 0.077891 0.001952 \n", - "16 0.000721 0.000031 \n", - "17 0.086393 0.001722 \n", - "18 0.000748 0.000033 \n", - "19 0.090861 0.001669 " + "0 0.000123 0.000012 \n", + "1 0.017805 0.000808 \n", + "2 0.000217 0.000020 \n", + "3 0.028867 0.001263 \n", + "4 0.000318 0.000020 \n", + "5 0.040493 0.001269 \n", + "6 0.000386 0.000018 \n", + "7 0.048576 0.001337 \n", + "8 0.000501 0.000026 \n", + "9 0.057063 0.001715 \n", + "10 0.000484 0.000026 \n", + "11 0.060822 0.001581 \n", + "12 0.000532 0.000039 \n", + "13 0.069101 0.002249 \n", + "14 0.000577 0.000039 \n", + "15 0.076722 0.002335 \n", + "16 0.000649 0.000039 \n", + "17 0.081564 0.001610 \n", + "18 0.000680 0.000032 \n", + "19 0.087715 0.001959 " ] }, "execution_count": 34, @@ -2158,38 +2178,38 @@ " \n", " \n", " mean\n", - " 0.000417\n", - " 0.000020\n", + " 0.000418\n", + " 0.000022\n", " \n", " \n", " std\n", - " 0.000238\n", - " 0.000008\n", + " 0.000239\n", + " 0.000009\n", " \n", " \n", " min\n", - " 0.000020\n", - " 0.000003\n", + " 0.000018\n", + " 0.000004\n", " \n", " \n", " 25%\n", - " 0.000214\n", - " 0.000014\n", + " 0.000202\n", + " 0.000015\n", " \n", " \n", " 50%\n", - " 0.000394\n", - " 0.000019\n", + " 0.000402\n", + " 0.000021\n", " \n", " \n", " 75%\n", - " 0.000627\n", - " 0.000025\n", + " 0.000615\n", + " 0.000027\n", " \n", " \n", " max\n", - " 0.000915\n", - " 0.000049\n", + " 0.000892\n", + " 0.000044\n", " \n", " \n", "\n", @@ -2200,13 +2220,13 @@ " \n", " \n", "count 289.000000 289.000000\n", - "mean 0.000417 0.000020\n", - "std 0.000238 0.000008\n", - "min 0.000020 0.000003\n", - "25% 0.000214 0.000014\n", - "50% 0.000394 0.000019\n", - "75% 0.000627 0.000025\n", - "max 0.000915 0.000049" + "mean 0.000418 0.000022\n", + "std 0.000239 0.000009\n", + "min 0.000018 0.000004\n", + "25% 0.000202 0.000015\n", + "50% 0.000402 0.000021\n", + "75% 0.000615 0.000027\n", + "max 0.000892 0.000044" ] }, "execution_count": 35, @@ -2241,7 +2261,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 0.498462484897\n" + "Mann-Whitney Test p-value: 0.414863173548\n" ] } ], @@ -2279,7 +2299,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mann-Whitney Test p-value: 1.61253828675e-41\n" + "Mann-Whitney Test p-value: 3.28554363741e-42\n" ] } ], @@ -2325,7 +2345,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 38, @@ -2334,9 +2354,9 @@ }, { "data": { - "image/png": "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\norlkyRKeP3+erVp1IWCgqI78DIFVDAuLossVo41pQ4rqwy2ZmHgjbbYuFKvqVlBVI1i3bnMajRMo\nZofbaLNF+F0sBAtI4yGNR2kSSvozMzO5Zs0aLlmyxFtp9Vr1d+p0K4HV9ATQgXrU6XoQeJ6KUpuT\nJz9T+EEoTugNG7amw5FIp7Mbw8NjvUUbe/S4g6Jib87VvO+Vty8e/WFh0QS20RPstdsT+eGHH+bZ\nfvPmzbTbI+l01qfVGsYFCxbx6aefZnh4RZrN5Vi/fjMeOnTIu/2MGTNoMPhWEn6Fwp1zG1W1OgcO\nHMLGjdvSZqtB4f6qR1Ep+B1GR1fzHmfQoH9RBNQ9x9nJ6OjqHDz4Ier1U7TnXtBmEdna1buFgIF3\n331/ntldcnIyq1evR5OpEnW6kVTVBD722JMFjvfp06dpt0dSuKNI4FM6nVH866+/Cv1fpaamagH5\ntfQ013I6b+XUqVO928yf/xLNZjtVNZ7h4bHctWuX9n/0XTDxGZs06cixY59gtWpN2Lx5F37zzTdM\nSUlhixadaTCYGB5eievWrStUUyCANB6hbTwkocWQIcNpNI7TTgbrKPzkHjdOCo1Ga5FWy0yfPkOr\ntOqpwjuPN97YgyS5ePF/tF7tRyiqurbnlCkFNzM6cuQIq1Spr13lhtFqrcpu3frmWVKbkZGhXUF7\nakMdpF7vok7XjqKrYWMCbVmhQrw3nrN//35tietSAl9RUdry3nvv56pVq7h161a63W5mZmZy8uTJ\ntFq7Myf/xU293uTN5J816wXabN00N46bJtNY3nrrXdoJdixFwPlhiuCzZzx3sly52AI/d3Z2Nleu\nXMlp06YV2nHw66+/ptOZ6HMiJ53O+oW23RVFJQdTLCvvps3Q3qaiVMxTBTctLY0HDx70xnPuvXeY\nj2EkdboF7Nbt9qu+V0kCaTyk8ZCUHCdOnGB0dDXa7T1osTQh0NXnhJRJo9FapFav9933EP0bS33P\nuLi6JMVJZOLEKbTZXLRY7HzwwVFXNUgJCU1pMEzTTtxfetu65ubo0aNUlGif9/yGQGXm5FecI+Ck\n3d6aGzdu9O63fft2tmnTnbVrt+SkSc/kuxJo69atVNUqFKu1xFV2eHis94R45coVdu9+G222GNrt\nNVizZmOePHmSnTr1pEgMbEaxuEClwdCLOt0TVJQYLl/+Zp73uh6OHDmi9WPxFMg8SoslLE/9sNx8\n8skntNvrM6ec/WYCCufOXVjoe+a45IbSZBpOuz2SP/zwQ0A+TyCANB6hbTxCye2TH/9E/efO6i3s\niwAAESlJREFUneO7777LRYsWaa6QZQQO0Gx+gG3bdivSMV5/fSkVJZEigzqLFsu/OGDAkAK3T0lJ\n4dq1a7llyxa/GcXHH39Mo1GhbxDb4ejPlSvzxlguX75MVS3v4956m8If7zEmbgLRVJTa+favKIwx\nY0T3RZerDe32yDxLkN1uN3/55Rfu3buXV65c4cqVK7WcmcYE/kUReG/PGjUacsqUqdy6des1a8iP\nCxcusG/fu7TKveVotfamokRz9ux5he67aNEi2mwP+F0g6HR6ZmVlFem7c/z4cb744oucPXu2nzuw\nLABpPKTxKE3+6fq/++47Nmp0I6OiqvG22+7JN+CaH263m8OHj6bRaKPZ7GSrVl3yrThLkt98840W\np+hJu702u3e/zXv1v3nzZprNKkXfcBGHsdvr+fU292XDhg3aqqFmtFjCqKqRBOYS+JnAGOp0Fdm4\ncdt8V5AVhQMHDjApKYmnTp0qdNvFixdrOQ9NfIzfJZpMrjw9TYrDnXfeT6v1Ds1Qr6LJFM6+fW9n\nv373cdq0Gbx06VKB++7YsYOKEkvRs57U6eazVi1R/TbUv/uQxiO0jYfkn8358+f5v//976r+bhHP\neN9rHFS1Nd966y3v66++uoSKEkOr9SHa7Yns2bPfVdu9njp1ilu2bOH+/fv5888/s2XLLrTboxkd\nXYvjx0/kxYsX+cEHa9iuXW82aNCGjRolsmLFaqxfv3WeFUrF4cKFC3Q6I5nTB14E+y2W8gEt1x8R\ncQNzMsfdBBrSaOxMYAlttlvYtm23q47X/Pkv02xWabVGsHLlhAKXWIcakMZDGg/J3xur1ekTSyAN\nhnF+SXwkuXPnTi5cuJBz5szhkiVL+OWXXxZokJ5+egaNRtGCtkWLTnn6Z69a9Z6Wnf0Ogdcp8kBc\nBGZSUSLytPItDjt37qTRWI6iCdTnNJvvYLt2PQIWPD5z5gwdjljNNTacwH8JlGdOQmUmVbWqXxHK\n/EhPT+eJEyeuamRCDUjjEdrGI9SnvlJ/8BHLOKfQU0VWUap6Cxf66l+wYBEVJZqqeg9VtQYffHBU\nnmOtW7eOqlqTokpwFk2mf7NXrzt49OhRDh06gj163MEbbmhA/4ZLCwh0INCeFssIzp07NyCfy6M9\nNTWVgwb9i02adOTIkWOvuZd6QWRmZrJevRZa3arNBIZQp6tA0a7X4yZz0+Goz/HjJ3DAgKGcNGlq\nnsx4X9LS0njLLXfS4ajAChVu4GeffRYQraUBpPGQxqM0kfqDz7Fjx1izZmNaLOE0mRROm5bTJMqj\n/6+//qLZbPf65oG/qChxeZaijhs3gaImk8cwiGZJERFxNBgmEnhLa370oc828yiyp2tQUW7jq6++\nGpDPFeyx37NnD+32Gn6GwmK5gfHxtWk2P0zga5pM4+lwVKTN1pzAq7RY7mTdus0LLJ/SvfvttFju\n04zvLCpKRLG7UpYWkMYjtI2HRFIU3G43U1NTC7wqF+XjY31O+KTLdRM/+eQTv+0WLlyoZXp7yrS8\nzejomrTZBvns+wpFvaY3CbxKkdvQjTpdXcbF1SowsF+Y/pJm7969VNV45pT+yKSqxnPbtm0cMGAI\na9ZsxptvHkiDwcqcopLZtFqr8/777/drx+tBlDD5yztWFstDXLBgQYl/tkAAaTyk8ZBIMjMzWaFC\nvBajcBNIoqpG5Ak8X7p0iYmJ7Wm3N6fDcRsdjgocP348rdbBPsYjlUajjVWrNqZOJ2o9xcTU5MSJ\nT/qVUSkKL7wwn6oaTqPRyttuuztgLqmikJ2dzVatumiNnt6h1dqfrVp18Ytb5JTdz9TG7T4CCTQY\nRlFVq3Lq1Gf9jul0RlGU4xczGVXtyuXLl5fYZwokkMYjtI1HKLhNrobUX7r46t+3bx/j4hKo15vo\nckX5NXTy5cqVK/z444/57rvv8vjx4zx27BidzijqdHMJfE5Facdhwx4hKYxSenr6dWlbt24dFaWq\ntgz4HK3W2zlkyIh8tQeLixcvcsKEyezatR8nTJic57O43W62bduNFsu9FPk6lZhTSj2FZrPdb/n1\n0qXLaLPFUKd7gmZza9aunXjd41PaIADGI9g9zCUSSQlQt25dHD26H5cuXYLVaoVOp8t3O5PJhF69\nevk9t337lxgz5in8+ec69OnTDZMmiU7RRqMRRuP1nSI+/fT/tJ71NQEAly8/jY0bb7+uY10viqLg\nueeeKfB1nU6HDRtWY+TIcdi0aRr+/DMW2dk27dWKMBrDcO7cOYSFhQEAhgy5D9WrV8UXX3yJs2eb\nYcaMGbDZbAUe/+9O/t+w0EEzohKJpCwxbdqzmD79F1y5slx75l00aPAS9uzZVqq6CuLUqVOoVq0e\nzp9fBKAr9PrXEBv7Hxw6tO+6DWhZRru4KNb5XxoPiUQScM6dO4fGjdvg1KmqcLsrQq9fi02b1qFV\nq1alLa1AduzYgTvuGIoTJw6hTp0mWLNmBapVq1basoJCIIyHPjBSJNdDUlJSaUsoFlJ/6VKW9YeF\nheGHH7bjpZdux5w5jbF79zd+hqOo2tPT0zFkyAjExNRCgwZtkJycHCTFQIsWLXDkyI/IzLyEPXuS\nr2o4yvLYlxR/v/mYRCIpEzgcDgwePLhYx7jnnmHYsOESLl9eg5SUfejW7Vbs3v0NqlevHhiRkutG\nuq0kEkmZhCTMZgVZWakAXAAAq/VBzJ7dACNHjixdcSGOdFtJJJK/LTqdDhaLCiDV+5zBkAJVVUtP\nlMSLNB6lSKj7TaX+0iWU9RdV+7PPToWi9AQwG2bzvYiMPIR+/foFVVtRCOWxDxQlYTy6AzgA4CCA\nxwvYZoH2+h4AjX2eXwrgJIC9wRQokUjKJo88MhKrVs3Hv/+dgqeeSsD33yfD4XCUtiwJgh/zMAD4\nGUAXAMcBfAtgEID9Ptv0BDBS+9sCwHwALbXXbgRwAcAKAPXzOb6MeUgkEsk1Egoxj+YAfgVwGEAm\ngHcB3JJrmz4APJlEOwCEAaioPd4K4GyQNUokEonkGgm28YgFcMzn8R/ac9e6zd+SUPebSv2lSyjr\nD2XtQOjrDwTBzvMoqk8p9/SpyL6owYMHIz4+HoBITGrUqBE6dOgAIOcfXFYf7969u0zpkfrLlr6/\nu375uOQeJyUlYdmyZQDgPV8Wl2DHPFoCmAoRNAeAiQDcAGb6bLMYQBKESwsQwfX2EIFyAIgHsB4y\n5iGRSCQBIRRiHrsA1IAwAGYAAwCsy7XNOgD3avdbAjiHHMMhkUgkkjJIsI1HFsRKqo0AfgKwCmKl\n1TDtBgAbAByCCKy/CmCEz/7vAPgaoq7zMQBDgqy3RPFMK0MVqb90CWX9oawdCH39gaAkalt9qt18\neTXX44JqDQwKvByJRCKRFBdZ20oikUj+YYRCzEMikUgkf0Ok8ShFQt1vKvWXLqGsP5S1A6GvPxBI\n4yGRSCSSa0bGPCQSieQfhox5SCQSiaRUkMajFAl1v6nUX7qEsv5Q1g6Evv5AII2HRCKRSK4ZGfOQ\nSCSSfxgy5iGRSCSSUkEaj1Ik1P2mUn/pEsr6Q1k7EPr6A4E0HhKJRCK5ZmTMQyKRSP5hyJiHRCKR\nSEoFaTxKkVD3m0r9pUso6w9l7UDo6w8E0nhIJBKJ5JqRMQ+JRCL5hyFjHhKJRCIpFaTxKEVC3W8q\n9Zcuoaw/lLUDoa8/EEjjIZFIJJJrRsY8JBKJ5B+GjHlIJBKJpFQItvHoDuAAgIMAHi9gmwXa63sA\nNL7GfUOaUPebSv2lSyjrD2XtQOjrDwTBNB4GAC9BGIE6AAYBqJ1rm54AqgOoAeBBAK9cw74hz+7d\nu0tbQrGQ+kuXUNYfytqB0NcfCIJpPJoD+BXAYQCZAN4FcEuubfoAWK7d3wEgDEDFIu4b8pw7d660\nJRQLqb90CWX9oawdCH39gSCYxiMWwDGfx39ozxVlm5gi7CuRSCSSUiKYxqOoy6BCfcXXdXP48OHS\nllAspP7SJZT1h7J2IPT1l3VaAvjM5/FE5A18LwYw0OfxAQBRRdwXEK4typu8yZu8yds13X5FGcYI\n4DcA8QDMAHYj/4D5Bu1+SwDbr2FfiUQikfxN6QHgZwgrN1F7bph28/CS9voeAE0K2VcikUgkEolE\nIpFIgkM4gE0AfgHwOcRy3vwoKKlwNoD9EDObNQBcQVNaND2+lOUEyevVHwfgSwA/AtgHYFRwZeZL\nccYeEHlG3wNYHyyBhVAc/WEA3of4zv8E4Q4uaYqjfyLEd2cvgJUALMGTWSCF6U8A8A2AywDGXuO+\nJcH16i8Lv92AMgvAeO3+4wCez2cbA4R7Kx6ACf4xkpuQs6rs+QL2DzRX0+PBN97TAjnxnqLsG2yK\no78igEbafTuE67Ek9RdHu4cxAN4GsC5oKgumuPqXAxiq3Tei5C6WPBRHfzyAQ8gxGKsA3Bc8qflS\nFP2RABIBTIf/yTdUfrsF6b+m324o1LbyTSRcDuDWfLa5WlLhJgBu7f4OAJWCJbSIejyU5QTJ69Uf\nBSAV4gsLABcgroBjgivXj+JoB8T3oyeAJSidZeTF0e8CcCOApdprWQDSgis3D8XR/5e2jwJh+BQA\nx4Ou2J+i6D8FYJf2+rXuG2yKo/+afruhYDyiAJzU7p9Ezo/cl6IkJALiimxDPs8HmlBPkLxe/bkN\nczyES2JHgPVdjeKMPQDMBTAOORccJU1xxr4KxInhDQDfAXgN4gRckhRn/M8AeAHAUQAnAJwDsDlo\nSvOnqOeSQO8bKAKlIR6F/HbLivHYBOHjzH3rk2s7zxrl3OT3XG6eBHAFwo8abIqiByi7CZLXq993\nPzuE7/0RiKuYkuJ6tesA9AbwJ0S8o7T+N8UZeyPEisVF2t+LACYETlqRKM53vxqA0RAnrhiI79Bd\ngZFVZIqqP9D7BopAaCjSb9cYgDcKBDdd5bWTEO6cVADRED/u3ByHCPZ4iIOwuB4GQ7giOhdLZdEp\nTE9+21TStjEVYd9gc736PS4GE4APALwFYG2QNBZEcbTfDnHB0hOAFYATwAoA9wZLbD4UR79O2/Zb\n7fn3UfLGozj6OwD4GsBp7fk1AFpDxJ9KiqLoD8a+gaK4GkrztxtwZiFnxcAE5B/wvlpSYXeI1QMR\nQVVZdD0eynKCZHH06yBOuHODrjJ/iqPdl/YondVWxdX/FYCa2v2pAGYGSWdBFEd/I4hVPjaI79Fy\nAP8Ortw8XMvvbyr8A86h8tv1MBX++kv7txtwwiH8nrmX6sYA+MRnu4KSCg8COALhivgeYkpfEoR6\nguT16m8LES/YjZwx714Cen0pzth7aI/SWW0FFE9/Q4iZR0kvTfelOPrHI2ep7nKIK+GSpjD9FSHi\nCmkAzkLEaOxX2bekuV79ZeG3K5FIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgk\nEolEIpFIJBKJRCKRlD7xEM113oDI3H0bQFcAyRCVD5oBUCFKoe+AqGjbx2ffrwD8V7u10p7vACAJ\nwGqI0tdvBfkzSCQSiaSEiYfofVAXov7PLgCva6/1AfAhgGeRUwE2DMLIKBB1mjzNjWogp2hhB4iS\n4zHaMb8G0CZ4H0EiCSxlpaquRFLW+R2i5hK0v54+E/sgjEslCEPymPa8BaKiaSpEHaeGALIhDIiH\nnRB9KwBRTygeYjYjkZR5pPGQSIpGhs99N0RvGM99I0TXvtsgCnH6MhVACoB7IFqEXi7gmNmQv0dJ\nCFFWmkFJJKHORgCjfB431v46IWYfgOgLYihJURJJsJDGQyIpGrk7tDHX/WkQ5cN/gHBlPa29tgjA\nfRBuqVrw78x2tWNKJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJ\nRCKRSCSB5/8ByMyfADZGvh4AAAAASUVORK5CYII=\n", + "image/png": "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\niUSS+/w/t3PPI3Lev3cAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2363,7 +2383,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -2372,9 +2392,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index bbd900fdd..705946537 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -179,10 +179,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" ] } ], @@ -228,12 +228,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" ] } ], @@ -393,7 +393,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDhUMTM6NDI6MDYtMDQ6MDCJhmNxAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTA4\nVDEzOjQyOjA2LTA0OjAw+NvbzQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDhUMTQ6MjI6MjEtMDQ6MDCbwpaZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTA4\nVDE0OjIyOjIxLTA0OjAw6p8uJQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -587,7 +587,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "rm: cannot remove ‘statepoint.*’: No such file or directory\n", "\n", " .d88888b. 888b d888 .d8888b.\n", " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", @@ -605,7 +604,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 13:42:07\n", + " Date/Time: 2015-10-08 14:22:21\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -661,20 +660,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.6000E-01 seconds\n", - " Reading cross sections = 1.3900E-01 seconds\n", - " Total time in simulation = 1.6630E+01 seconds\n", - " Time in transport only = 1.6613E+01 seconds\n", - " Time in inactive batches = 2.1710E+00 seconds\n", - " Time in active batches = 1.4459E+01 seconds\n", + " Total time for initialization = 4.3800E-01 seconds\n", + " Reading cross sections = 1.0100E-01 seconds\n", + " Total time in simulation = 1.5663E+01 seconds\n", + " Time in transport only = 1.5651E+01 seconds\n", + " Time in inactive batches = 2.2110E+00 seconds\n", + " Time in active batches = 1.3452E+01 seconds\n", " Time synchronizing fission bank = 2.0000E-03 seconds\n", " Sampling source sites = 0.0000E+00 seconds\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.7100E+01 seconds\n", - " Calculation Rate (inactive) = 5757.72 neutrons/second\n", - " Calculation Rate (active) = 2593.54 neutrons/second\n", + " Total time for finalization = 3.0000E-03 seconds\n", + " Total time elapsed = 1.6114E+01 seconds\n", + " Calculation Rate (inactive) = 5653.55 neutrons/second\n", + " Calculation Rate (active) = 2787.69 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -721,7 +720,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 24, "metadata": { "collapsed": false, "scrolled": true @@ -741,7 +740,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 25, "metadata": { "collapsed": false, "scrolled": true @@ -764,24 +763,45 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { - "ename": "AttributeError", - "evalue": "'CrossScore' object has no attribute 'strip'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mfiss_rate\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_tally\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'fiss. rate'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mabs_rate\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_tally\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'abs. rate'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mkeff\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfiss_rate\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mabs_rate\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[0mkeff\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_pandas_dataframe\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.pyc\u001b[0m in \u001b[0;36m__div__\u001b[1;34m(self, other)\u001b[0m\n\u001b[0;32m 2051\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2052\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mTally\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2053\u001b[1;33m \u001b[0mnew_tally\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_outer_product\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbinary_op\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'/'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2054\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2055\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mother\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mReal\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.pyc\u001b[0m in \u001b[0;36m_outer_product\u001b[1;34m(self, other, binary_op)\u001b[0m\n\u001b[0;32m 1548\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mself_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother_score\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mitertools\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mproduct\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mall_scores\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1549\u001b[0m \u001b[0mnew_score\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCrossScore\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother_score\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mbinary_op\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1550\u001b[1;33m \u001b[0mnew_tally\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_score\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnew_score\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1551\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1552\u001b[0m \u001b[1;31m# Generate nuclide \"outer products\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.pyc\u001b[0m in \u001b[0;36madd_score\u001b[1;34m(self, score)\u001b[0m\n\u001b[0;32m 434\u001b[0m \u001b[1;32mreturn\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 435\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 436\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_scores\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mscore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 437\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 438\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mnum_score_bins\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msetter\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'CrossScore' object has no attribute 'strip'" - ] + "data": { + "text/html": [ + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nuclidescoremeanstd. dev.
0total(nu-fission / absorption)1.0401660.009069
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "0 total (nu-fission / absorption) 1.040166 0.009069" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -803,11 +823,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)totalabsorption0.959380.008187
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total absorption 0.95938 0.008187" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute resonance escape probability using tally arithmetic\n", "therm_abs_rate = sp.get_tally(name='therm. abs. rate')\n", @@ -825,11 +883,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "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", + "
nuclidescoremeanstd. dev.
0totalnu-fission1.0908990.010602
\n", + "
" + ], + "text/plain": [ + " nuclide score mean std. dev.\n", + "0 total nu-fission 1.090899 0.010602" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute fast fission factor factor using tally arithmetic\n", "therm_fiss_rate = sp.get_tally(name='therm. fiss. rate')\n", @@ -848,11 +942,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "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", + "
energy [MeV]cellnuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)10000totalabsorption0.8034130.007031
\n", + "
" + ], + "text/plain": [ + " energy [MeV] cell nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) 10000 total absorption 0.803413 0.007031" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute thermal flux utilization factor using tally arithmetic\n", "fuel_therm_abs_rate = sp.get_tally(name='fuel therm. abs. rate')\n", @@ -869,11 +1003,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(nu-fission / absorption)1.2370530.011765
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide score mean std. dev.\n", + "0 (0.0e+00 - 6.2e-01) total (nu-fission / absorption) 1.237053 0.011765" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Compute neutrons produced per absorption (eta) using tally arithmetic\n", "eta = therm_fiss_rate / fuel_therm_abs_rate\n", @@ -889,11 +1061,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "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", + "
energy [MeV]nuclidescoremeanstd. dev.
0(0.0e+00 - 6.2e-01)total(((absorption * nu-fission) * absorption) * (n...1.0401660.019018
\n", + "
" + ], + "text/plain": [ + " energy [MeV] nuclide \\\n", + "0 (0.0e+00 - 6.2e-01) total \n", + "\n", + " score mean std. dev. \n", + "0 (((absorption * nu-fission) * absorption) * (n... 1.040166 0.019018 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "keff = res_esc * fast_fiss * therm_util * eta\n", "keff.get_pandas_dataframe()" @@ -910,7 +1123,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false, "scrolled": true @@ -926,11 +1139,131 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)(U-238 / total)(nu-fission / flux)6.657029e-077.377419e-09
110000(0.0e+00 - 6.3e-07)(U-238 / total)(scatter / flux)2.099891e-012.303838e-03
210000(0.0e+00 - 6.3e-07)(U-235 / total)(nu-fission / flux)3.564204e-013.951669e-03
310000(0.0e+00 - 6.3e-07)(U-235 / total)(scatter / flux)5.555330e-036.101004e-05
410000(6.3e-07 - 2.0e+01)(U-238 / total)(nu-fission / flux)7.154887e-038.053460e-05
510000(6.3e-07 - 2.0e+01)(U-238 / total)(scatter / flux)2.277701e-011.079289e-03
610000(6.3e-07 - 2.0e+01)(U-235 / total)(nu-fission / flux)8.066738e-035.254797e-05
710000(6.3e-07 - 2.0e+01)(U-235 / total)(scatter / flux)3.366802e-031.647058e-05
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score \\\n", + "0 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (nu-fission / flux) \n", + "1 10000 (0.0e+00 - 6.3e-07) (U-238 / total) (scatter / flux) \n", + "2 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (nu-fission / flux) \n", + "3 10000 (0.0e+00 - 6.3e-07) (U-235 / total) (scatter / flux) \n", + "4 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (nu-fission / flux) \n", + "5 10000 (6.3e-07 - 2.0e+01) (U-238 / total) (scatter / flux) \n", + "6 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (nu-fission / flux) \n", + "7 10000 (6.3e-07 - 2.0e+01) (U-235 / total) (scatter / flux) \n", + "\n", + " mean std. dev. \n", + "0 6.657029e-07 7.377419e-09 \n", + "1 2.099891e-01 2.303838e-03 \n", + "2 3.564204e-01 3.951669e-03 \n", + "3 5.555330e-03 6.101004e-05 \n", + "4 7.154887e-03 8.053460e-05 \n", + "5 2.277701e-01 1.079289e-03 \n", + "6 8.066738e-03 5.254797e-05 \n", + "7 3.366802e-03 1.647058e-05 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "fuel_xs = fuel_rxn_rates / flux\n", "fuel_xs.get_pandas_dataframe()" @@ -945,11 +1278,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 6.65702880e-07]\n", + " [ 3.56420449e-01]]\n", + "\n", + " [[ 7.15488656e-03]\n", + " [ 8.06673774e-03]]]\n" + ] + } + ], "source": [ "# Show how to use Tally.get_values(...) with a CrossScore\n", "nu_fiss_xs = fuel_xs.get_values(scores=['(nu-fission / flux)'])\n", @@ -965,11 +1310,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.00555533]]\n", + "\n", + " [[ 0.0033668 ]]]\n" + ] + } + ], "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", @@ -979,11 +1334,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[ 0.22777006]\n", + " [ 0.0033668 ]]]\n" + ] + } + ], "source": [ "# Show how to use Tally.get_values(...) with a CrossFilter and CrossScore\n", "fast_scatter_xs = fuel_xs.get_values(filters=['energy'], \n", @@ -1001,11 +1365,81 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010000(0.0e+00 - 6.3e-07)U-238nu-fission0.0000021.283958e-08
110000(0.0e+00 - 6.3e-07)U-235nu-fission0.8685536.880390e-03
210000(6.3e-07 - 2.0e+01)U-238nu-fission0.0821498.837250e-04
310000(6.3e-07 - 2.0e+01)U-235nu-fission0.0926185.195308e-04
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10000 (0.0e+00 - 6.3e-07) U-238 nu-fission 0.000002 1.283958e-08\n", + "1 10000 (0.0e+00 - 6.3e-07) U-235 nu-fission 0.868553 6.880390e-03\n", + "2 10000 (6.3e-07 - 2.0e+01) U-238 nu-fission 0.082149 8.837250e-04\n", + "3 10000 (6.3e-07 - 2.0e+01) U-235 nu-fission 0.092618 5.195308e-04" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# \"Slice\" the nu-fission data into a new derived Tally\n", "nu_fission_rates = fuel_rxn_rates.get_slice(scores=['nu-fission'])\n", @@ -1014,11 +1448,131 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "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", + "
cellenergy [MeV]nuclidescoremeanstd. dev.
010002(1.0e-08 - 1.1e-07)H-1scatter4.6193980.040124
110002(1.1e-07 - 1.2e-06)H-1scatter2.0307570.011239
210002(1.2e-06 - 1.3e-05)H-1scatter1.6584880.009777
310002(1.3e-05 - 1.4e-04)H-1scatter1.8530020.007378
410002(1.4e-04 - 1.5e-03)H-1scatter2.0507730.012484
510002(1.5e-03 - 1.6e-02)H-1scatter2.1317590.007821
610002(1.6e-02 - 1.7e-01)H-1scatter2.2137100.015159
710002(1.7e-01 - 1.9e+00)H-1scatter2.0119250.009406
810002(1.9e+00 - 2.0e+01)H-1scatter0.3712800.003949
\n", + "
" + ], + "text/plain": [ + " cell energy [MeV] nuclide score mean std. dev.\n", + "0 10002 (1.0e-08 - 1.1e-07) H-1 scatter 4.619398 0.040124\n", + "1 10002 (1.1e-07 - 1.2e-06) H-1 scatter 2.030757 0.011239\n", + "2 10002 (1.2e-06 - 1.3e-05) H-1 scatter 1.658488 0.009777\n", + "3 10002 (1.3e-05 - 1.4e-04) H-1 scatter 1.853002 0.007378\n", + "4 10002 (1.4e-04 - 1.5e-03) H-1 scatter 2.050773 0.012484\n", + "5 10002 (1.5e-03 - 1.6e-02) H-1 scatter 2.131759 0.007821\n", + "6 10002 (1.6e-02 - 1.7e-01) H-1 scatter 2.213710 0.015159\n", + "7 10002 (1.7e-01 - 1.9e+00) H-1 scatter 2.011925 0.009406\n", + "8 10002 (1.9e+00 - 2.0e+01) H-1 scatter 0.371280 0.003949" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "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", diff --git a/openmc/filter.py b/openmc/filter.py index 63034fe57..bff1c62f0 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -161,7 +161,7 @@ class Filter(object): raise ValueError(msg) # If the bin edge is a single value, it is a Cell, Material, etc. ID - if not cv._isinstance(bins, Iterable): + if not isinstance(bins, Iterable): bins = [bins] # If the bins are in a collection, convert it to a list @@ -200,7 +200,7 @@ class Filter(object): msg = 'Unable to add bins "{0}" to a mesh Filter since ' \ 'only a single mesh can be used per tally'.format(bins) raise ValueError(msg) - elif not cv._isinstance(bins[0], Integral): + elif not isinstance(bins[0], Integral): msg = 'Unable to add bin "{0}" to mesh Filter since it ' \ 'is a non-integer'.format(bins[0]) raise ValueError(msg) @@ -443,7 +443,7 @@ class Filter(object): if self.type == 'mesh': # Construct 3-tuple of x,y,z cell indices for a 3D mesh - if (len(self.mesh.dimension) == 3): + if len(self.mesh.dimension) == 3: nx, ny, nz = self.mesh.dimension x = bin_index / (ny * nz) y = (bin_index - (x * ny * nz)) / nz diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index f0adc5101..dfaca9be9 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -17,28 +17,21 @@ class EnergyGroups(object): Parameters ---------- - group_edges : ndarray + group_edges : Iterable of Real The energy group boundaries [MeV] - num_groups : Integral - The number of energy groups Attributes ---------- - group_edges : ndarray + group_edges : Iterable of Real The energy group boundaries [MeV] - num_groups : Integral - The number of energy groups """ - def __init__(self, group_edges=None, num_groups=None): + def __init__(self, group_edges=None): self._group_edges = None - self._num_groups = None if group_edges is not None: self.group_edges = group_edges - if num_groups is not None: - self.num_groups = num_groups def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -47,7 +40,6 @@ class EnergyGroups(object): if existing is None: clone = type(self).__new__(type(self)) clone._group_edges = copy.deepcopy(self.group_edges, memo) - clone._num_groups = self.num_groups memo[id(self)] = clone @@ -77,47 +69,13 @@ class EnergyGroups(object): @property def num_groups(self): - return self._num_groups + return len(self.group_edges) - 1 @group_edges.setter def group_edges(self, edges): cv.check_type('group edges', edges, Iterable, Real) cv.check_greater_than('number of group edges', len(edges), 1) self._group_edges = np.array(edges) - self._num_groups = len(edges)-1 - - def generate_bin_edges(self, start, stop, num_groups, spacing='linear'): - """Generate equally or logarithmically-spaced energy group boundaries. - - Parameters - ---------- - start : Real - The lowest energy in MeV - stop : Real - The highest energy in MeV - num_groups : Integral - The number of energy groups - spacing : {'linear', 'logarithmic'} - The spacing between groups - - """ - - cv.check_type('first edge', start, Real) - cv.check_type('last edge', stop, Real) - cv.check_type('number of groups', num_groups, Integral) - cv.check_type('spacing', spacing, basestring) - cv.check_greater_than('first edge', start, 0, True) - cv.check_greater_than('last edge', stop, start, False) - cv.check_greater_than('number of groups', num_groups, 0) - cv.check_value('spacing', spacing, ('linear', 'logarithmic')) - - if spacing == 'linear': - self.group_edges = np.linspace(start, stop, num_groups + 1) - elif spacing == 'logarithmic': - self.group_edges = \ - np.logspace(np.log10(start), np.log10(stop), num_groups + 1) - - self._num_groups = num_groups def get_group(self, energy): """Returns the energy group in which the given energy resides. @@ -144,7 +102,7 @@ class EnergyGroups(object): 'the group edges have not yet been set'.format(energy) raise ValueError(msg) - index = np.where(self.group_edges > energy)[0] + index = np.where(self.group_edges > energy)[0][0] group = self.num_groups - index return group @@ -173,6 +131,9 @@ class EnergyGroups(object): 'the group edges have not yet been set'.format(group) raise ValueError(msg) + cv.check_greater_than('group', group, 0) + cv.check_less_than('group', group, self.num_groups, equality=True) + lower = self.group_edges[self.num_groups-group] upper = self.group_edges[self.num_groups-group+1] return lower, upper @@ -205,7 +166,7 @@ class EnergyGroups(object): raise ValueError(msg) if groups == 'all': - indices = np.arange(self.num_groups) + return np.arange(self.num_groups) else: indices = np.zeros(len(groups), dtype=np.int) @@ -229,7 +190,7 @@ class EnergyGroups(object): The energy groups of interest - a list of 2-tuples, each directly corresponding to one of the new coarse groups. The values in the 2-tuples are upper/lower energy groups used to construct a new - coarse group. For example, if [(1,2), (2,4)] was used as the coarse + coarse group. For example, if [(1,2), (3,4)] was used as the coarse groups, fine groups 1 and 2 would be merged into coarse group 1 while fine groups 3 and 4 would be merged into coarse group 2. @@ -255,8 +216,8 @@ class EnergyGroups(object): cv.check_less_than('lower group', group[0], group[1], False) # Compute the group indices into the coarse group - group_bounds = [group[0] for group in coarse_groups] - group_bounds.append(coarse_groups[-1][1]) + group_bounds = [group[1] for group in coarse_groups] + group_bounds.insert(0, coarse_groups[0][0]) # Determine the indices mapping the fine-to-coarse energy groups group_bounds = np.asarray(group_bounds) From a83de39efb455a31f63a0a95896a4bfd37cae09f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 8 Oct 2015 16:36:00 -0400 Subject: [PATCH 080/130] Now using Python ternary operator to shorten StatePoint property getters --- .../examples/multi-group-cross-sections.ipynb | 116 +++++++++--------- .../examples/pandas-dataframes.ipynb | 42 +++---- .../pythonapi/examples/tally-arithmetic.ipynb | 28 ++--- openmc/statepoint.py | 36 ++---- 4 files changed, 100 insertions(+), 122 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 7c7ad7bbb..09a48a727 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -437,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -463,7 +463,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 16:01:19\n", + " Date/Time: 2015-10-08 16:26:35\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -548,20 +548,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9700E-01 seconds\n", - " Reading cross sections = 9.1000E-02 seconds\n", - " Total time in simulation = 1.2622E+01 seconds\n", - " Time in transport only = 1.2608E+01 seconds\n", - " Time in inactive batches = 1.8770E+00 seconds\n", - " Time in active batches = 1.0745E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 3.9300E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 1.2399E+01 seconds\n", + " Time in transport only = 1.2391E+01 seconds\n", + " Time in inactive batches = 1.8730E+00 seconds\n", + " Time in active batches = 1.0526E+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 = 0.0000E+00 seconds\n", - " Total time for finalization = 3.0000E-03 seconds\n", - " Total time elapsed = 1.3030E+01 seconds\n", - " Calculation Rate (inactive) = 13319.1 neutrons/second\n", - " Calculation Rate (active) = 9306.65 neutrons/second\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.2802E+01 seconds\n", + " Calculation Rate (inactive) = 13347.6 neutrons/second\n", + " Calculation Rate (active) = 9500.28 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -579,7 +579,7 @@ "0" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -606,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -625,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -645,7 +645,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -667,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -710,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -751,7 +751,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -881,7 +881,7 @@ "54 1 2 2 total 0.266499 0.001265" ] }, - "execution_count": 22, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -900,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": { "collapsed": true }, @@ -918,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -946,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -985,7 +985,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": { "collapsed": true }, @@ -1019,7 +1019,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -1181,7 +1181,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -1244,7 +1244,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -1278,7 +1278,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -1304,7 +1304,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": { "collapsed": true }, @@ -1333,7 +1333,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -1382,7 +1382,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1423,7 +1423,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -1450,7 +1450,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1480,7 +1480,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1520,7 +1520,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1531,7 +1531,7 @@ "0" ] }, - "execution_count": 37, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1561,7 +1561,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1582,7 +1582,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1618,7 +1618,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1672,7 +1672,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1714,7 +1714,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1844,7 +1844,7 @@ "119 10002 1 5 H-1 0.000000 0.000000" ] }, - "execution_count": 42, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1864,7 +1864,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -1892,7 +1892,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -1901,7 +1901,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAADDCAYAAACxgLv/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFxZJREFUeJzt3XmYVNWZx/FvAyIKCijGBRiaxA0VRVTcpROX4BLNzKhR\n46jEOMZldOIel9gkJsRM4q6joxFxJRHRcVc0NGpcEVAEdVzoCAooi7iAcaHmj/cUVV3Ucqrq3KrT\nze/zPPV01/bWuVXvfe+5596qAyIiIiIiIiIiIiIiIiIiIiIiIiIiNfHfwIX1bkQAHWU5JDl7Am/U\nuxEBdJTlaKMV2DvntuOAp4s8ZxvgMeAjYIXHaxwCTAeWuuc8CTSW18xVNAO35dzWAhxfZdykNGLv\n1dSc2/sAXwKzPeMcR/HPZnV3HDAD+ByYB1wH9CzxnMOBZ91zJuW5vzNwCfA+8An2GRaK2Q+4B8vz\nj11bji1nAfJoxHKnU9ZtxxF3HrRgbd425/Z73e17ecZZAXw7XLPK16n0QxKRcpdyfAmMw68IbgqM\nBX6OJfNA4FrgmzJf00e5y5GrFp/BWsDWWdePAt6l+rZnq1cu1duZwO/c33WBXYABwERgjSLPWwRc\n5p6bzygXaxcX92jgiwKPvQ34O/BPwHrAvwELylmIIhoCxQHoEjBWPingTeCYrNvWB3YFPiwzVrHl\nTno56mY28L2c247Fb2u8KaV7zIcC04rc3wk4H3gb641MAfq6+64E3sN62lOAPdztI4B/YBuIT7He\n+CXA18Byd9tV7rFbYivmImx357Cs174F2+V/GPgM23O4Bfi1u78JmAucga1cH2A9lbT1gQdc+150\nbSj0vjVi79X5wO+zbn/J3ZbdYz4v6/2YCfzQ3T7ILd/XbhkXey7HucDzWM8P4CTgNaBrgba2R+ti\n78mhObd3xwrBSI8YP2XVHnNvF3egZzs+ZdVeYrY9sN75Eiy3073pA7H1ZKm7/eKs57yH5c6nWE7s\ngm0YcvNgTeAP2IZhPpYT3dx9TVgun4PtSYx1t83Jep1WbKP2CtbbH+dipp2DrQNzsfeqWG92EnCR\ni58urKdiezBzyPSYhwHPuffjA+BqMhvRp9xrfOaW8zCP5fgOtq5v765vgu29+PbQozGb8ocy0nwK\n80CsmFyGvYE9cu4/G3gV2MxdH4z1NAB+jK0YnbDiOI9MMbkYuDUn1iTgJ1nXu2Mf2LEuxhDsQxrk\n7r8FS8Bd3fU1gTHAr9z1JuArbNikM7A/trub3o0dB9yJJf8gbAV6Ku+7kCnMA9zjGoCtgNex9z+7\nMB8KbOT+PxxLzA3d9XwbzVLL0QBMxt6zzbAVebsC7WyvRmCfVb69hVuwz6mUfIV5L6xopAvBm8DJ\nRWJMBJ4BfoT1mrMNwArrj7B8Wo/M5zCczJ7UYKywHpL1vNyhjHx5cDlwH9ALW8/uB37r7mvC3p/R\nWOHrxqqFeTa2Ad8IW+9mASe6+0Zgyz8I2+u7HdvrLVaYj8eGPEe4217ANirZhXkoVpw7ueWcBZye\nFSe3+Pssx0+xDs1a7vWzO0Jlq9fuZwP2YS7JulxLuF3r2dgb1xf4C1YYx2BFE+zDuwB4y12fQaYH\ncIdrzwqssK8JbJHV7ny7ONm3HeRef6yLMR2YQNte833YFhusF54b4yuswH0DPIIVyS2wFetfsGL3\nBVZgxxZoU7a52Mq9L7abl7txARiPrZhg79lbwM552paWKrEcKfdapwH/C1yK9Yo6kj7AQvJ3FOa7\n+yvRD9sQb4ZtXA/FNtT7FHj8YVjBvAgbopoG7OjuOwor3H/G8mkxmc9hMlZMwNaBcVixhtJ5nr5+\nAtaB+RjL09HAEVmPWYHl61cUHoq5Cnu/lmB7g0Pc7YcDN2N5vtzF8RlauRXLvS2xDcbzOfdPxfY2\nV2A9/f8hs9yFlFqOm7A9zhexDs0FHu0sqJ5jzIdgW8j05WQyb/qPsd2IT4GHKnyNF7BewrewI6h7\nkXmz+gPvFHjeWdgW9GMsUXpSegXL3qAMwApa9kbnKDK9zxRtt7T5LKLtyr4M641sgI1vZT9/bolY\n6de8Fdu1PgIbk8xN8GOwFTrd5m2wYZNiSi3H37EDMgOwDW9HsxDLjXzr0cZYhwDgejL5fJ5H3OXu\n76+wDV66aB5Q4PEfA7/APrMNsc7Afe6+/lixzmdnrJf5oYtxIqU/82wbAGsDL5PJm0dou758hA3/\nFTM/6//lZDpQG1NZrk/AhkpPIX8nZHPgQaw3vhT4DaWX22c5bsL2QK7GCnjFYjpgk10o7gDWcZcD\nA8Segh2ZTe+2zcGGRHLtiQ1zHIZtaXtjH1x2LzBX7m3vYT2R7I3OOliSFOOzt/ARNsbXP+u2/gUe\nm2sCtmK/w6oJPgDrNZyC7er2xsaDiy23jwOx3cgnsXHIjuY5rHD+a87tPbBd6Sfd9Z+Ryefcg335\n3ttXC7yez+ewCPgjNs65HpaP3ynw2DuxAt4Py/frydQEn1xfiBXSrcjkei9s7L2cNhcyj8pyfTm2\ngfgZq55FBTYOPgurAT2xDlupWlhqOXoAV2DFeRT2XlQspsLsoxuZ8d41aXuQINvu2JjPBu76lsAP\nyOzS3IQdpNoUKz7bYkncAyt8C93r/JK2STYf27XM3ogsoG3iP4htkY/GxqPWAHZybYDCu4g+u2jf\nYAW2GRvL2hI7Au+T/J8D38Xel1zdXYyFWE6MxHpfaQuwlTf7LINSu7p9gBuxYaPjsPd/f492tidL\nsZXwauD72PvTiA0FzSF/UUjrhOXzGu7/Ncm8v+9gQxMXYHk4CNv7e7BArEuxTkcXrPifhA1FLcaK\n7z5YZ6ML1jNMjzH3wHq5X2JjrkeRyaX0aanZuT2ftnmwAvuMryCzrvUF9iuy3D7SefQXLBe3xHrm\nF5UR43xseOK9PPf1wPZelrnYJ+Xcn7tO+7gSG8b4d2wv//oyn99GTIW51Cl0jdgb+Zp73HJs7Cmf\nj4GDsV3AT7Gt5wQyA/KXYR/649jKdSO2kjwGPAr8H3a0eDltP9i73d9FWC8c7AM5FFsJrsDG2fbD\nhgzex7b6o8lsUPItZ+5txd6HU7Gt/HxsfPkuiu9iZceaStsDfun7ZmG9rOdc3G2wg0lpT2JjkfPJ\nnHZUajluwHpjj2LvzfHYBrGqnkSE/gsrAn/Acul5bAhnb4rvzh6D5fN12J7acuw9SzsS25NZhBXk\nC8l/vjPYRvperMi+g/UsD3b3vYftKZ3pYk0jcwbHydhwySdY0ftzVsxl2C7+31zcYcBfWTUPzsXG\nVp93yz8R65ik+fS8c+9L3/8oNv48CVsnc49nFDMPOxMln7OwjdAn2J7iuJw2NWPr1hJs3S5Um9K3\nHYKt8+kCfwZ2gPFIj3ZKB3UpdmBTpKMbhO3RxtShFAHs7Ixtsd29Ydgu58FFnyHSfv0zNszTGzsV\nb0J9myOS347Y+OHn2NH2c+vbHJFEPYINTS7Cvna+YfGHi4iIiIiIlDZ0ePqIpS66JHPZbniKOug5\nfHD9l12XDnwZkKKAEL8clWJKwfgZNzTDic1FH/LtHWYWvT9tcfO1rNdc/Psa707euuj9K41phpHF\n2+VNsZKJ1dQAYX/lzFdqeOqRkg9qbb6dxuajiz5mcoPvabFXYd9iL+YOz1gt2C8ThKBY4WONggJ5\nrdNOREQio8IsIhKZ2hXmHZqChVqraadgsRjSpFgdIVYd9Woq9lPI5dq59EO8NSpWO43lM243Avuq\ncWfsK7WX5tzvN8bswXeM2Yf3GLPEL7kx5pK57TPG7MN/jNmH7xizxK3yMebOwDVYAm+Fffd7UNFn\niLQPym2JVqnCPAz7gZJW7AdZxpGZ4UCkPVNuS7RKFea+rPpD1X0LPFakPVFuS7RKzfbqN3h8Q3Pm\n/x2aYMemCpsjAkxrgektSb+KV263Nt++8v9eTdsGPtAnq5dWdymtVGF+n1VnEFh1epcSXxwRKcv2\nTXZJGzsqiVfxyu1SXxwR8ddI27M1Jhd8ZKmhjClkJoTsis2icH81TROJhHJbolWqx/w1NmPGY9hR\n7D9ReNYQkfZEuS3RKlWYwX4PNczJnCJxUW5LlPSVbBGRyKgwi4hERoVZRCQyKswiIpHxOfhX2mdB\norAOn4YJBOwxfGKwWADPTN43aDxpHyY3PB8kzsXsHyQOwCj+GCwWfBIwloSiHrOISGRUmEVEIqPC\nLCISGRVmEZHIqDCLiETGpzDfDCwAZiTcFpFaU25LlHwK8xhs+h2Rjka5LVHyKcxPA0uSbohIHSi3\nJUoaYxYRiUyYb/6Nac78P6Sp7ewTIuWqzdRSnlqy/m+k7QwUIuVoJdTUUn5GNgcJIwLUamopT011\nfG3pWBoJNbWUiIjUmE9hvgt4Ftgcm+59ZKItEqkd5bZEyWco48jEWyFSH8ptiZKGMkREIqPCLCIS\nGRVmEZHIqDCLiEQmzHnMgbwyeZdgsX49/KxgsQC+HN41WKwXXx4eLBZfhAslyRnFxcFi/Y4zg8U6\njyuDxYLFAWOt3tRjFhGJjAqziEhkVJhFRCKjwiwiEhkVZhGRyPgU5v7AJGAm8BpwWqItEqkd5bZE\nyed0ua+AnwPTgR7Ay8BE4PUE2yVSC8ptiZJPj3k+lrgAn2FJu0liLRKpHeW2RKncMeZGYHvghfBN\nEamrRpTbEolyvvnXAxgPnI71LjI0tZSENLXFppeqncK5ramlJJhWQk8ttQZwD3A7cN8q92pqKQlp\naJNd0sYkOrVU8dzW1FISTCMhp5ZqAP4EzAKuqKJVIrFRbkuUfArz7sDRwHeBae4yIslGidSIclui\n5DOU8Qz6Iop0TMptiZKSUkQkMirMIiKRUWEWEYmMCrOISGQaAsRI0ZIKECZy14QLdd/d3w8W67ec\nHyzW299sGiwWwOL564cJ1G8tCJOr5UoRcEqoGD1NuHPE9+SVYLHMhMDxYjMKCuS1eswiIpFRYRYR\niYwKs4hIZFSYRUQio8IsIhIZn8LcDfuN2unYj72MTrRFIrWhvJZo+fxWxhfYj7wsc49/BtjD/RVp\nr5TXEi3foYxl7m9XoDOwOJnmiNSU8lqi5FuYO2G7fAuwWYVnJdYikdpRXkuUfGcwWQEMAXoCj2HT\nOrSsvFdTS0lIzz4Fzz1Vi1cqnteAppaScFoJPbVU2lLgIWBHsjNWU0tJSLvtZZe0y3+T9Cvmz2tA\nU0tJOI2EnFqqD9DL/b8WsC8204NIe6a8lmj59Jg3BsZiRbwTcBvwZJKNEqkB5bVEy6cwzwCGJt0Q\nkRpTXku09M0/EZHIqDCLiERGhVlEJDIqzCIikVFhFhGJTLlfMFl9/We4UD9s2DVYrNSCpmCxRn8r\n4EICT/TdO0icvwaJIvnsySXBYqUO2C5YLICGdwPOJfpGc7hYNaAes4hIZFSYRUQio8IsIhIZFWYR\nkcj4FubO2A+8PJBgW0TqQbkt0fEtzKdjPyIe8DCpSBSU2xIdn8LcDzgAuAloSLY5IjWl3JYo+RTm\ny4GzsdkeRDoS5bZEqdQXTA4CPsTG4JoKPkpTS0lAS1pmsKRlRtIv45fbmlpKgmkl1NRSuwEHY7t7\n3YB1gVuBY9o8SlNLSUC9mwbTu2nwyuuto+5K4mX8cltTS0kwjYSaWup8oD8wEDgC+3bsMUWfIdI+\nKLclWuWex6wj19JRKbclGuX8iNFkivW9Rdov5bZERd/8ExGJjAqziEhkVJhFRCKjwiwiEhkVZhGR\nyGhqKV9fB4w1pTlYqIYN1wsWK3XN6cFiAWx6yttB4mhqqSR9FSxSw8NjgsUCSF0T7udLGt4IeDbk\nNc3hYhWgHrOISGRUmEVEIqPCLCISGRVmEZHI+B78awU+Ab7BjhYMS6pBIjXUivJaIuRbmFPY7x8u\nTq4pIjWnvJYolTOUoal3pCNSXkt0fAtzCngCmAKckFxzRGpKeS1R8h3K2B2YB2wATATeAJ5eea+m\nlpKAZrYsZGbLolq8VPG8BjS1lITTSqippdLmub8fAfdiB0kyCayppSSgrZv6sHVTn5XXx496K6mX\nKp7XgKaWknAaCTW1FMDawDru/+7AfkDiM2WKJEx5LdHy6TFviPUm0o+/A3g8sRaJ1IbyWqLlU5hn\nA0OSbohIjSmvJVr65p+ISGRUmEVEIqPCLCISGRVmEZHIqDCLiEQmxO8EpGgJOG2LlKXbkHC/v/PF\nNeGmqQJI3R7mZyga3rA/QYKVJwUX1+FlxQwNFil1ziHBYjXMClTvHmyAAnmtHrOISGRUmEVEIqPC\nLCISGRVmEZHI+BTmXsB44HVgFrBLoi0SqR3ltkTJ57cyrgQeBg51j++eaItEake5LVEqVZh7AnsC\nx7rrXwNLE22RSG0otyVapYYyBmI/Ij4GmArciP2OrUh7p9yWaJXqMXfBzvI+FXgJuAI4D/hlm0dp\naikJqOVzaFmW+Mv45bamlpJQFrbAohavh5YqzHPd5SV3fTyWvG1paikJqKm7XdJGJTP9n19ua2op\nCaVPk13S3hpV8KGlhjLmA3OAzd31fYCZ1bRNJBLKbYmWz1kZ/4FNu9MVeAcYmWiLRGpHuS1R8inM\nrwA7Jd0QkTpQbkuU9M0/EZHIqDCLiERGhVlEJDIqzCIikVFhFhGJjM9ZGRKxL94ONx1UywU7B4sF\n0Hxh0HCy2pkaLFLD778MFuvxQLOc7VfkPvWYRUQio8IsIhIZFWYRkcioMIuIRManMG8BTMu6LAVO\nS7JRIjWgvJZo+ZyV8Sawvfu/E/A+cG9iLRKpDeW1RKvcoYx9sF/hmpNAW0TqRXktUSm3MB8B3JlE\nQ0TqSHktUSnnCyZdgR8A565yj6aWkoBa3aVGCuc1oKmlJJRX3MVHOYV5f+BlbALLtjS1lATUSNvy\nNznZlyuc14CmlpJQtnOXtNuLPLacoYwjgbsqapFIvJTXEh3fwtwdO0AyIcG2iNSa8lqi5DuU8TnQ\nJ8mGiNSB8lqipG/+iYhEpnaFeVqLYtUr1pRwsaa1fBIsVmuwSPXWqlgdIla4w8y+Z18UUrvCPL1F\nseoV6+VwsaarMOfRqlgdItbqWJhFRMSLCrOISGRCzJHSAgwPEEekkMnU55seLSi3JTn1ymsRERER\nERERkfZoBPAG8BYFf8XLy83AAmBGgDb1ByYBM4HXqG72im7AC8B0YBYwusq2dcZm1Xigyjhg5xO9\n6uK9WGWsXsB44HVsOXepME5HmT1EeV2+ULndivK6Kp2Bt7EfDFsD+5AHVRhrT2zWiRAJvBEwxP3f\nA5vRotJ2Aazt/nYBngf2qCLWGcAdwP1VxEibDawXIA7AWOAn7v8uQM8AMTsB87CC0p4orysTKrc7\ndF7X4nS5YVgCtwJfAeOAQyqM9TSwJEyzmI+tTACfYVvLTaqIt8z97YqttIsrjNMPOAC4iTBnzRAo\nTk+sgNzsrn+N9Qiq1V5nD1Fely90bnfYvK5FYe5L28bNdbfFpBHrsbxQRYxO2AqxANuVnFVhnMuB\ns4EVVbQlWwp4ApgCnFBFnIHYbxaPAaYCN5LpTVWjvc4eorwuX8jc7tB5XYvCnKrBa1SjBza+dDrW\nw6jUCmwXsh+wF5Wdn3gQ8CE2PhWqt7w7tnLuD5yC9Q4q0QUYClzn/n4OnFdl29Kzh9xdZZx6UF6X\nJ3Rud+i8rkVhfp+24yz9sd5FDNYA7sEmE7gvUMylwEPAjhU8dzfgYGz87C7ge8CtVbZnnvv7ETYL\n9LAK48x1l5fc9fFYIlejxOwhUVNelyd0biuvq9QFG2tpxLYk1RwkwcUJcZCkAUuMywPE6oMd2QVY\nC3gK2LvKmMOp/sj12sA67v/uwN+A/aqI9xSwufu/Gbi0ilhg47LHVhmjXpTXlas2t5XXgeyPHR1+\nG/hFFXHuAj4A/oGN742sItYe2G7adDKnt4yoMNZgbHxqOnYKz9lVtCttONUfuR6ItWk6dupUNe89\n2JRlL2E/njWB6o5edwcWklnB2iPldWWqzW3ltYiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiHRs/w9e\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1932,7 +1932,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -1954,7 +1954,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -1993,7 +1993,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -2076,7 +2076,7 @@ "2 10000 2 U-235 485.513530 2.418761" ] }, - "execution_count": 47, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -2102,7 +2102,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "metadata": { "collapsed": true }, @@ -2124,7 +2124,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -2172,7 +2172,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -2200,7 +2200,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -2235,7 +2235,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2292,7 +2292,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -2310,7 +2310,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 53, "metadata": { "collapsed": false }, diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index cc2bd3b11..1a6d99fd7 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -409,7 +409,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTA4VDE0OjIx\nOjU1LTA0OjAwjn8AkAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wOFQxNDoyMTo1NS0wNDow\nMP8iuCwAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTA4VDE2OjEw\nOjMyLTA0OjAwm8uP7QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wOFQxNjoxMDozMi0wNDow\nMOqWN1EAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -599,7 +599,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 14:21:55\n", + " Date/Time: 2015-10-08 16:10:32\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -663,20 +663,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3800E-01 seconds\n", - " Reading cross sections = 9.7000E-02 seconds\n", - " Total time in simulation = 9.7830E+00 seconds\n", - " Time in transport only = 9.7730E+00 seconds\n", - " Time in inactive batches = 1.4030E+00 seconds\n", - " Time in active batches = 8.3800E+00 seconds\n", - " Time synchronizing fission bank = 1.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 4.1200E-01 seconds\n", + " Reading cross sections = 9.5000E-02 seconds\n", + " Total time in simulation = 8.7750E+00 seconds\n", + " Time in transport only = 8.7640E+00 seconds\n", + " Time in inactive batches = 1.3210E+00 seconds\n", + " Time in active batches = 7.4540E+00 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 2.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 1.0230E+01 seconds\n", - " Calculation Rate (inactive) = 8909.48 neutrons/second\n", - " Calculation Rate (active) = 4474.94 neutrons/second\n", + " Total time elapsed = 9.1960E+00 seconds\n", + " Calculation Rate (inactive) = 9462.53 neutrons/second\n", + " Calculation Rate (active) = 5030.86 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1106,7 +1106,7 @@ "data": { "image/png": "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\nkiRJEsA/A3sng0v+IomuAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1129,7 +1129,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1140,7 +1140,7 @@ "data": { "image/png": "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\n/wfC21DgNNvIcQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2345,7 +2345,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 38, @@ -2356,7 +2356,7 @@ "data": { "image/png": "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\niUSS+/w/t3PPI3Lev3cAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2383,7 +2383,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -2394,7 +2394,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 705946537..2687c1326 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -393,7 +393,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDhUMTQ6MjI6MjEtMDQ6MDCbwpaZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTA4\nVDE0OjIyOjIxLTA0OjAw6p8uJQAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDhUMTY6MDk6NTgtMDQ6MDDETy0uAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTA4\nVDE2OjA5OjU4LTA0OjAwtRKVkgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -604,7 +604,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 14:22:21\n", + " Date/Time: 2015-10-08 16:09:59\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -660,20 +660,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3800E-01 seconds\n", - " Reading cross sections = 1.0100E-01 seconds\n", - " Total time in simulation = 1.5663E+01 seconds\n", - " Time in transport only = 1.5651E+01 seconds\n", - " Time in inactive batches = 2.2110E+00 seconds\n", - " Time in active batches = 1.3452E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 4.0200E-01 seconds\n", + " Reading cross sections = 9.5000E-02 seconds\n", + " Total time in simulation = 1.5664E+01 seconds\n", + " Time in transport only = 1.5652E+01 seconds\n", + " Time in inactive batches = 2.3940E+00 seconds\n", + " Time in active batches = 1.3270E+01 seconds\n", + " Time synchronizing fission bank = 3.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 = 3.0000E-03 seconds\n", - " Total time elapsed = 1.6114E+01 seconds\n", - " Calculation Rate (inactive) = 5653.55 neutrons/second\n", - " Calculation Rate (active) = 2787.69 neutrons/second\n", + " Total time for finalization = 1.0000E-03 seconds\n", + " Total time elapsed = 1.6076E+01 seconds\n", + " Calculation Rate (inactive) = 5221.39 neutrons/second\n", + " Calculation Rate (active) = 2825.92 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", diff --git a/openmc/statepoint.py b/openmc/statepoint.py index 55abf010a..c816d1caa 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -1,4 +1,3 @@ -import copy import sys import numpy as np @@ -116,31 +115,19 @@ class StatePoint(object): @property def cmfd_balance(self): - if self.cmfd_on: - return self._f['cmfd/cmfd_balance'].value - else: - return None + return self._f['cmfd/cmfd_balance'].value if self.cmfd_on else None @property def cmfd_dominance(self): - if self.cmfd_on: - return self._f['cmfd/cmfd_dominance'].value - else: - return None + return self._f['cmfd/cmfd_dominance'].value if self.cmfd_on else None @property def cmfd_entropy(self): - if self.cmfd_on: - return self._f['cmfd/cmfd_entropy'].value - else: - return None + return self._f['cmfd/cmfd_entropy'].value if self.cmfd_on else None @property def cmfd_indices(self): - if self.cmfd_on: - return self._f['cmfd/indices'].value - else: - return None + return self._f['cmfd/indices'].value if self.cmfd_on else None @property def cmfd_src(self): @@ -152,10 +139,7 @@ class StatePoint(object): @property def cmfd_srccmp(self): - if self.cmfd_on: - return self._f['cmfd/cmfd_srccmp'].value - else: - return None + return self._f['cmfd/cmfd_srccmp'].value if self.cmfd_on else None @property def current_batch(self): @@ -323,10 +307,7 @@ class StatePoint(object): @property def source(self): - if self.source_present: - return self._f['source_bank'].value - else: - return None + return self._f['source bank'].value if self.source_present else None @property def source_present(self): @@ -463,10 +444,7 @@ class StatePoint(object): @property def with_summary(self): - if self.summary is None: - return False - else: - return True + return False if self.summary is None else True def get_tally(self, scores=[], filters=[], nuclides=[], name=None, id=None, estimator=None): From 514eb2d40bbf10a204040797d8d6ed16bcdf4099 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 8 Oct 2015 19:17:41 -0400 Subject: [PATCH 081/130] Fixed bug in StatePoint.source property getter --- openmc/mgxs/mgxs.py | 22 +++++++++++----------- openmc/statepoint.py | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index a41dcb5b2..c997381f7 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -479,7 +479,7 @@ class MultiGroupXS(object): special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Return the macro or micro cross section in units of cm^-1 or barns order_groups: {'increasing', 'decreasing'} Return the cross section indexed according to increasing (default) @@ -743,7 +743,7 @@ class MultiGroupXS(object): The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Return the macro or micro cross section in units of cm^-1 or barns """ @@ -836,7 +836,7 @@ class MultiGroupXS(object): Filename for the HDF5 file (default is 'mgxs') directory : str Directory for the HDF5 file (default is 'mgxs') - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns append : boolean If true, appends to an existing HDF5 file with the same filename @@ -868,7 +868,7 @@ class MultiGroupXS(object): if not os.path.exists(directory): os.makedirs(directory) - filename = directory + '/' + filename + '.h5' + filename = os.path.join(directory, filename + '.h5') filename = filename.replace(' ', '-') if append and os.path.isfile(filename): @@ -958,7 +958,7 @@ class MultiGroupXS(object): The format for the exported data file groups : Iterable of Integral or 'all' Energy groups of interest - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns """ @@ -972,7 +972,7 @@ class MultiGroupXS(object): if not os.path.exists(directory): os.makedirs(directory) - filename = directory + '/' + filename + filename = os.path.join(directory, filename) filename = filename.replace(' ', '-') # Get a Pandas DataFrame for the data @@ -1028,7 +1028,7 @@ class MultiGroupXS(object): The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Return macro or micro cross section in units of cm^-1 or barns summary : None or Summary An optional Summary object to be used to construct columns for @@ -1559,7 +1559,7 @@ class ScatterMatrixXS(MultiGroupXS): special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Return the macro or micro cross section in units of cm^-1 or barns order_groups: {'increasing', 'decreasing'} Return the cross section indexed according to increasing (default) @@ -1684,7 +1684,7 @@ class ScatterMatrixXS(MultiGroupXS): The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Return the macro or micro cross section in units of cm^-1 or barns """ @@ -1881,7 +1881,7 @@ class Chi(MultiGroupXS): special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} This parameter is not relevant for chi but is included here to mirror the parent MultiGroupXS.get_xs(...) class method order_groups: {'increasing', 'decreasing'} @@ -2010,7 +2010,7 @@ class Chi(MultiGroupXS): The special string 'all' (default) 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. - xs_type: {'macro' or 'micro'} + xs_type: {'macro', 'micro'} Return macro or micro cross section in units of cm^-1 or barns summary : None or Summary An optional Summary object to be used to construct columns for diff --git a/openmc/statepoint.py b/openmc/statepoint.py index c816d1caa..3a6f7ed56 100644 --- a/openmc/statepoint.py +++ b/openmc/statepoint.py @@ -307,7 +307,7 @@ class StatePoint(object): @property def source(self): - return self._f['source bank'].value if self.source_present else None + return self._f['source_bank'].value if self.source_present else None @property def source_present(self): From 3445b4aceefd27b81b80066b5748ac751de4501c Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 8 Oct 2015 19:26:16 -0400 Subject: [PATCH 082/130] Renamed MultiGroupXS as MGXS --- .../examples/multi-group-cross-sections.ipynb | 871 ++---------------- openmc/mgxs/mgxs.py | 46 +- 2 files changed, 85 insertions(+), 832 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 09a48a727..70fdbfe11 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -287,7 +287,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MultiGroupXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of generic and abstract `MultiGroupXS` class:\n", + "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MGXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of generic and abstract `MGXS` class:\n", "\n", "* `TotalXS`\n", "* `TransportXS`\n", @@ -323,7 +323,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we must instruct our multi-group cross section objects to generate the tallies needed to calculate each of them in OpenMC. This can be done with the `MultiGroupXS.create_tallies()` routine." + "Next, we must instruct our multi-group cross section objects to generate the tallies needed to calculate each of them in OpenMC. This can be done with the `MGXS.create_tallies()` routine." ] }, { @@ -437,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": { "collapsed": false }, @@ -463,7 +463,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 16:26:35\n", + " Date/Time: 2015-10-08 19:25:10\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -533,55 +533,8 @@ " 42/1 1.11114 1.16491 +/- 0.00529\n", " 43/1 1.14227 1.16423 +/- 0.00517\n", " 44/1 1.14104 1.16355 +/- 0.00506\n", - " 45/1 1.16756 1.16366 +/- 0.00492\n", - " 46/1 1.13065 1.16274 +/- 0.00487\n", - " 47/1 1.11251 1.16139 +/- 0.00492\n", - " 48/1 1.14731 1.16101 +/- 0.00481\n", - " 49/1 1.16691 1.16117 +/- 0.00469\n", - " 50/1 1.19679 1.16206 +/- 0.00465\n", - " Creating state point statepoint.50.h5...\n", - "\n", - " ===========================================================================\n", - " ======================> SIMULATION FINISHED <======================\n", - " ===========================================================================\n", - "\n", - "\n", - " =======================> TIMING STATISTICS <=======================\n", - "\n", - " Total time for initialization = 3.9300E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 1.2399E+01 seconds\n", - " Time in transport only = 1.2391E+01 seconds\n", - " Time in inactive batches = 1.8730E+00 seconds\n", - " Time in active batches = 1.0526E+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 = 0.0000E+00 seconds\n", - " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.2802E+01 seconds\n", - " Calculation Rate (inactive) = 13347.6 neutrons/second\n", - " Calculation Rate (active) = 9500.28 neutrons/second\n", - "\n", - " ============================> RESULTS <============================\n", - "\n", - " k-effective (Collision) = 1.16131 +/- 0.00453\n", - " k-effective (Track-length) = 1.16206 +/- 0.00465\n", - " k-effective (Absorption) = 1.16096 +/- 0.00364\n", - " Combined k-effective = 1.16120 +/- 0.00325\n", - " Leakage Fraction = 0.00000 +/- 0.00000\n", - "\n" + " 45/1 1.16756 1.16366 +/- 0.00492\n" ] - }, - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -606,7 +559,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "collapsed": false }, @@ -625,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "collapsed": false }, @@ -645,13 +598,13 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "# Load the tallies from the statepoint into each MultiGroupXS object\n", + "# Load the tallies from the statepoint into each MGXS object\n", "transport.load_from_statepoint(sp)\n", "nufission.load_from_statepoint(sp)\n", "nuscatter.load_from_statepoint(sp)\n", @@ -667,19 +620,11 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1486: RuntimeWarning: invalid value encountered in divide\n" - ] - } - ], + "outputs": [], "source": [ "transport.compute_xs()\n", "nufission.compute_xs()\n", @@ -710,34 +655,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t1\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.11e-02 +/- 7.69e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t6.59e-04 +/- 2.97e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t8.95e-03 +/- 5.12e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t1.45e-02 +/- 7.10e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t4.71e-02 +/- 1.02e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t7.29e-02 +/- 8.86e-01%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t1.11e-01 +/- 6.67e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t2.38e-01 +/- 7.71e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission.print_xs()" ] @@ -751,141 +673,11 @@ }, { "cell_type": "code", - "execution_count": 21, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup ingroup outnuclidemeanstd. dev.
63111total0.0769700.001012
62112total0.0878760.000344
61113total0.0004180.000023
60114total0.0000000.000000
59115total0.0000000.000000
58116total0.0000000.000000
57117total0.0000000.000000
56118total0.0000000.000000
55121total0.0000000.000000
54122total0.2664990.001265
\n", - "
" - ], - "text/plain": [ - " cell group in group out nuclide mean std. dev.\n", - "63 1 1 1 total 0.076970 0.001012\n", - "62 1 1 2 total 0.087876 0.000344\n", - "61 1 1 3 total 0.000418 0.000023\n", - "60 1 1 4 total 0.000000 0.000000\n", - "59 1 1 5 total 0.000000 0.000000\n", - "58 1 1 6 total 0.000000 0.000000\n", - "57 1 1 7 total 0.000000 0.000000\n", - "56 1 1 8 total 0.000000 0.000000\n", - "55 1 2 1 total 0.000000 0.000000\n", - "54 1 2 2 total 0.266499 0.001265" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = nuscatter.get_pandas_dataframe()\n", "df.head(10)" @@ -900,7 +692,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": { "collapsed": true }, @@ -918,7 +710,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "collapsed": true }, @@ -946,24 +738,11 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: 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" - ] - } - ], + "outputs": [], "source": [ "# Import OpenMOC and the OpenMOC/OpenCG compatibility module\n", "import openmoc\n", @@ -985,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1019,148 +798,11 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", - "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.685185\tres = 0.000E+00\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.728847\tres = 4.513E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.695633\tres = 2.844E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.663357\tres = 4.557E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.632339\tres = 4.640E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.604187\tres = 4.676E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.579451\tres = 4.452E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.558474\tres = 4.094E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.541436\tres = 3.620E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.528380\tres = 3.051E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.519273\tres = 2.411E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.513991\tres = 1.724E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.512364\tres = 1.017E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.514171\tres = 3.165E-03\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.519155\tres = 3.527E-03\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.527038\tres = 9.693E-03\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.537524\tres = 1.518E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.550310\tres = 1.990E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.565096\tres = 2.379E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.581585\tres = 2.687E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.599493\tres = 2.918E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.618548\tres = 3.079E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.638497\tres = 3.179E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.659105\tres = 3.225E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.680156\tres = 3.228E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.701456\tres = 3.194E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.722831\tres = 3.132E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.744127\tres = 3.047E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.765209\tres = 2.946E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.785961\tres = 2.833E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.806283\tres = 2.712E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.826093\tres = 2.586E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.845324\tres = 2.457E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.863921\tres = 2.328E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.881841\tres = 2.200E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.899055\tres = 2.074E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.915540\tres = 1.952E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.931284\tres = 1.834E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.946283\tres = 1.720E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.960536\tres = 1.610E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.974052\tres = 1.506E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.986841\tres = 1.407E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.998920\tres = 1.313E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 1.010307\tres = 1.224E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 1.021023\tres = 1.140E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 1.031091\tres = 1.061E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 1.040537\tres = 9.861E-03\n", - "[ NORMAL ] Iteration 49:\tk_eff = 1.049386\tres = 9.161E-03\n", - "[ NORMAL ] Iteration 50:\tk_eff = 1.057664\tres = 8.504E-03\n", - "[ NORMAL ] Iteration 51:\tk_eff = 1.065399\tres = 7.889E-03\n", - "[ NORMAL ] Iteration 52:\tk_eff = 1.072617\tres = 7.313E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 1.079345\tres = 6.775E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.085609\tres = 6.273E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.091436\tres = 5.804E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.096851\tres = 5.367E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.101877\tres = 4.961E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.106540\tres = 4.583E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.110860\tres = 4.231E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.114861\tres = 3.905E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.118563\tres = 3.602E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.121986\tres = 3.321E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.125149\tres = 3.060E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.128069\tres = 2.819E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.130764\tres = 2.595E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.133248\tres = 2.389E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.135538\tres = 2.197E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.137648\tres = 2.021E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.139590\tres = 1.858E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.141377\tres = 1.707E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.143021\tres = 1.568E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.144531\tres = 1.440E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.145920\tres = 1.322E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.147195\tres = 1.213E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.148365\tres = 1.113E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.149440\tres = 1.020E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.150425\tres = 9.356E-04\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.151329\tres = 8.574E-04\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.152157\tres = 7.856E-04\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.152916\tres = 7.196E-04\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.153612\tres = 6.590E-04\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.154249\tres = 6.033E-04\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.154832\tres = 5.522E-04\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.155366\tres = 5.053E-04\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.155855\tres = 4.623E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.156302\tres = 4.229E-04\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.156710\tres = 3.866E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.157084\tres = 3.535E-04\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.157426\tres = 3.230E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.157738\tres = 2.952E-04\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.158023\tres = 2.697E-04\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.158284\tres = 2.464E-04\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.158522\tres = 2.251E-04\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.158739\tres = 2.055E-04\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.158937\tres = 1.876E-04\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.159119\tres = 1.713E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.159284\tres = 1.564E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.159435\tres = 1.428E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.159573\tres = 1.301E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.159699\tres = 1.188E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.159813\tres = 1.083E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.159917\tres = 9.880E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.160013\tres = 9.009E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.160100\tres = 8.222E-05\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.160179\tres = 7.487E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.160251\tres = 6.824E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.160317\tres = 6.223E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.160376\tres = 5.675E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.160431\tres = 5.174E-05\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.160481\tres = 4.715E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.160527\tres = 4.298E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.160568\tres = 3.910E-05\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.160605\tres = 3.561E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.160640\tres = 3.242E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.160671\tres = 2.960E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.160699\tres = 2.689E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.160725\tres = 2.452E-05\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.160749\tres = 2.232E-05\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.160770\tres = 2.034E-05\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.160790\tres = 1.855E-05\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.160807\tres = 1.687E-05\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.160824\tres = 1.538E-05\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.160838\tres = 1.399E-05\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.160852\tres = 1.280E-05\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.160864\tres = 1.149E-05\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.160875\tres = 1.061E-05\n" - ] - } - ], + "outputs": [], "source": [ "# Generate tracks for OpenMOC\n", "openmoc_geometry.initializeFlatSourceRegions()\n", @@ -1181,21 +823,11 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.161200\n", - "openmoc keff = 1.160875\n", - "bias [pcm]: -32.5\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -1244,7 +876,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1278,7 +910,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1304,7 +936,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1333,22 +965,11 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -1382,22 +1003,11 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", @@ -1423,7 +1033,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1450,7 +1060,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1480,7 +1090,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1520,22 +1130,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Delete old HDF5 files\n", "!rm *.h5\n", @@ -1561,7 +1160,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1582,7 +1181,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1618,46 +1217,11 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 5.91e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 4.03e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t5.48e+01 +/- 5.56e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.84e+01 +/- 8.48e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 1.25e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 7.98e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 5.73e-01%\n", - "\n", - "\tNuclide =\tU-238\n", - "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 6.74e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 8.28e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t4.75e-04 +/- 7.97e+00%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 7.56e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.22e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 7.97e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 5.72e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" @@ -1672,34 +1236,11 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 6.42e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.52e-03 +/- 3.96e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 5.56e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.32e-02 +/- 8.48e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.25e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 7.98e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 5.73e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='macro', nuclides='sum')" @@ -1714,141 +1255,11 @@ }, { "cell_type": "code", - "execution_count": 41, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211O-161.5600980.017801
1271000211H-10.2348770.010096
1241000212O-160.2882360.004397
1251000212H-11.5878150.007847
1221000213O-160.0000000.000000
1231000213H-10.0101220.000513
1201000214O-160.0000000.000000
1211000214H-10.0000000.000000
1181000215O-160.0000000.000000
1191000215H-10.0000000.000000
\n", - "
" - ], - "text/plain": [ - " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 O-16 1.560098 0.017801\n", - "127 10002 1 1 H-1 0.234877 0.010096\n", - "124 10002 1 2 O-16 0.288236 0.004397\n", - "125 10002 1 2 H-1 1.587815 0.007847\n", - "122 10002 1 3 O-16 0.000000 0.000000\n", - "123 10002 1 3 H-1 0.010122 0.000513\n", - "120 10002 1 4 O-16 0.000000 0.000000\n", - "121 10002 1 4 H-1 0.000000 0.000000\n", - "118 10002 1 5 O-16 0.000000 0.000000\n", - "119 10002 1 5 H-1 0.000000 0.000000" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", @@ -1864,7 +1275,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1892,22 +1303,11 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create plot of the H-1 scattering matrix\n", "fig = plt.subplot(121)\n", @@ -1932,7 +1332,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1954,133 +1354,22 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\ttransport\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tNuclide =\tU-238\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 5.85e-01%\n", - "\n", - "\tNuclide =\tO-16\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", - "\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "condense_xs.print_xs()" ] }, { "cell_type": "code", - "execution_count": 46, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup innuclidemeanstd. dev.
3100001U-2389.5893230.038756
4100001O-163.1591010.012939
5100001U-23521.0952560.257787
0100002U-23811.1788440.065428
1100002O-163.8000270.024538
2100002U-235485.5135302.418761
\n", - "
" - ], - "text/plain": [ - " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-238 9.589323 0.038756\n", - "4 10000 1 O-16 3.159101 0.012939\n", - "5 10000 1 U-235 21.095256 0.257787\n", - "0 10000 2 U-238 11.178844 0.065428\n", - "1 10000 2 O-16 3.800027 0.024538\n", - "2 10000 2 U-235 485.513530 2.418761" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = condense_xs.get_pandas_dataframe(xs_type='micro')\n", "df" @@ -2102,7 +1391,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": { "collapsed": true }, @@ -2124,7 +1413,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": { "collapsed": false }, @@ -2172,7 +1461,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": { "collapsed": false }, @@ -2200,21 +1489,11 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.227616\n", - "openmoc keff = 1.225325\n", - "bias [pcm]: -229.1\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -2235,27 +1514,11 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:633: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n" - ] - } - ], + "outputs": [], "source": [ "su.make_opencg_geometry()\n", "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)\n", @@ -2292,7 +1555,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": { "collapsed": false }, @@ -2310,21 +1573,11 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.227616\n", - "openmoc keff = 1.227096\n", - "bias [pcm]: -52.0\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index c997381f7..579557ae8 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -30,7 +30,7 @@ DOMAINS = [openmc.Cell, openmc.Material] -class MultiGroupXS(object): +class MGXS(object): """A multi-group cross section for some energy group structure within some spatial domain. @@ -322,7 +322,7 @@ class MultiGroupXS(object): def create_tallies(self, scores, all_filters, keys, estimator): """Instantiates tallies needed to compute the multi-group cross section. - This is a helper method for MultiGroupXS subclasses to create tallies + This is a helper method for MGXS subclasses to create tallies for input file generation. The tallies are stored in the tallies dict. This method is called by each subclass' create_tallies(...) method which define the parameters given to this parent class method. @@ -585,8 +585,8 @@ class MultiGroupXS(object): Returns ------- - MultiGroupXS - A new MultiGroupXS condensed to the group structure of interest + MGXS + A new MGXS condensed to the group structure of interest """ @@ -603,7 +603,7 @@ class MultiGroupXS(object): cv.check_value('lower coarse energy', coarse_groups.group_edges[0], [self.energy_groups.group_edges[0]]) - # Clone this MultiGroupXS to initialize the condensed version + # Clone this MGXS to initialize the condensed version condensed_xs = copy.deepcopy(self) condensed_xs.energy_groups = coarse_groups @@ -664,8 +664,8 @@ class MultiGroupXS(object): Returns ------- - MultiGroupXS - A new MultiGroupXS averaged across the subdomains of interest + MGXS + A new MGXS averaged across the subdomains of interest Raises ------ @@ -688,7 +688,7 @@ class MultiGroupXS(object): else: subdomains = [0] - # Clone this MultiGroupXS to initialize the subdomain-averaged version + # Clone this MGXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) avg_xs.domain_type = 'cell' @@ -931,13 +931,13 @@ class MultiGroupXS(object): average = average.squeeze() std_dev = std_dev.squeeze() - # Add MultiGroupXS results data to the HDF5 group + # Add MGXS results data to the HDF5 group nuclide_group.require_dataset('average', dtype=np.float64, shape=average.shape, data=average) nuclide_group.require_dataset('std. dev.', dtype=np.float64, shape=std_dev.shape, data=std_dev) - # Close the MultiGroup results HDF5 file + # Close the results HDF5 file xs_results.close() def export_xs_data(self, filename='mgxs', directory='mgxs', @@ -1013,7 +1013,7 @@ class MultiGroupXS(object): def get_pandas_dataframe(self, groups='all', nuclides='all', xs_type='macro', summary=None): - """Build a Pandas DataFrame for the MultiGroupXS data. + """Build a Pandas DataFrame for the MGXS data. This method leverages the Tally.get_pandas_dataframe(...) method, but renames the columns with terminology appropriate for cross section data. @@ -1129,7 +1129,7 @@ class MultiGroupXS(object): return df -class TotalXS(MultiGroupXS): +class TotalXS(MGXS): """A total multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1169,7 +1169,7 @@ class TotalXS(MultiGroupXS): super(TotalXS, self).compute_xs() -class TransportXS(MultiGroupXS): +class TransportXS(MGXS): """A transport-corrected total multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1241,7 +1241,7 @@ class TransportXS(MultiGroupXS): super(TransportXS, self).compute_xs() -class AbsorptionXS(MultiGroupXS): +class AbsorptionXS(MGXS): """An absorption multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1281,7 +1281,7 @@ class AbsorptionXS(MultiGroupXS): super(AbsorptionXS, self).compute_xs() -class CaptureXS(MultiGroupXS): +class CaptureXS(MGXS): """A capture multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1321,7 +1321,7 @@ class CaptureXS(MultiGroupXS): super(CaptureXS, self).compute_xs() -class FissionXS(MultiGroupXS): +class FissionXS(MGXS): """A fission multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1360,7 +1360,7 @@ class FissionXS(MultiGroupXS): super(FissionXS, self).compute_xs() -class NuFissionXS(MultiGroupXS): +class NuFissionXS(MGXS): """A fission production multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1400,7 +1400,7 @@ class NuFissionXS(MultiGroupXS): super(NuFissionXS, self).compute_xs() -class ScatterXS(MultiGroupXS): +class ScatterXS(MGXS): """A scatter multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1439,7 +1439,7 @@ class ScatterXS(MultiGroupXS): super(ScatterXS, self).compute_xs() -class NuScatterXS(MultiGroupXS): +class NuScatterXS(MGXS): """A nu-scatter multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1479,7 +1479,7 @@ class NuScatterXS(MultiGroupXS): super(NuScatterXS, self).compute_xs() -class ScatterMatrixXS(MultiGroupXS): +class ScatterMatrixXS(MGXS): """A scattering matrix multi-group cross section.""" def __init__(self, domain=None, domain_type=None, @@ -1813,7 +1813,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): super(ScatterMatrixXS, self).create_tallies(scores, filters, keys, estimator) -class Chi(MultiGroupXS): +class Chi(MGXS): """The fission spectrum.""" def __init__(self, domain=None, domain_type=None, @@ -1883,7 +1883,7 @@ class Chi(MultiGroupXS): return the cross section summed over all nuclides. xs_type: {'macro', 'micro'} This parameter is not relevant for chi but is included here to - mirror the parent MultiGroupXS.get_xs(...) class method + mirror the parent MGXS.get_xs(...) class method order_groups: {'increasing', 'decreasing'} Return the cross section indexed according to increasing (default) or decreasing energy groups (decreasing or increasing energies) @@ -1995,7 +1995,7 @@ class Chi(MultiGroupXS): def get_pandas_dataframe(self, groups='all', nuclides='all', xs_type='macro', summary=None): - """Build a Pandas DataFrame for the MultiGroupXS data. + """Build a Pandas DataFrame for the MGXS data. This method leverages the Tally.get_pandas_dataframe(...) method, but renames the columns with terminology appropriate for cross section data. From 41a9ede62765630b9d10685f1c119a4612dc8941 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 8 Oct 2015 19:58:39 -0400 Subject: [PATCH 083/130] Implemented new static factory MGXS.get_mgxs(...) method --- .../examples/multi-group-cross-sections.ipynb | 450 ++++++++++++++++-- openmc/mgxs/mgxs.py | 92 +++- 2 files changed, 505 insertions(+), 37 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 70fdbfe11..652c21a11 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -437,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -463,7 +463,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 19:25:10\n", + " Date/Time: 2015-10-08 19:56:45\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -533,8 +533,55 @@ " 42/1 1.11114 1.16491 +/- 0.00529\n", " 43/1 1.14227 1.16423 +/- 0.00517\n", " 44/1 1.14104 1.16355 +/- 0.00506\n", - " 45/1 1.16756 1.16366 +/- 0.00492\n" + " 45/1 1.16756 1.16366 +/- 0.00492\n", + " 46/1 1.13065 1.16274 +/- 0.00487\n", + " 47/1 1.11251 1.16139 +/- 0.00492\n", + " 48/1 1.14731 1.16101 +/- 0.00481\n", + " 49/1 1.16691 1.16117 +/- 0.00469\n", + " 50/1 1.19679 1.16206 +/- 0.00465\n", + " Creating state point statepoint.50.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 4.5500E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 1.3254E+01 seconds\n", + " Time in transport only = 1.3238E+01 seconds\n", + " Time in inactive batches = 1.8670E+00 seconds\n", + " Time in active batches = 1.1387E+01 seconds\n", + " Time synchronizing fission bank = 8.0000E-03 seconds\n", + " Sampling source sites = 7.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 = 2.0000E-03 seconds\n", + " Total time elapsed = 1.3719E+01 seconds\n", + " Calculation Rate (inactive) = 13390.5 neutrons/second\n", + " Calculation Rate (active) = 8781.94 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.16131 +/- 0.00453\n", + " k-effective (Track-length) = 1.16206 +/- 0.00465\n", + " k-effective (Absorption) = 1.16096 +/- 0.00364\n", + " Combined k-effective = 1.16120 +/- 0.00325\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" ] + }, + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -559,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -578,7 +625,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -598,7 +645,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -620,11 +667,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1486: RuntimeWarning: invalid value encountered in divide\n" + ] + } + ], "source": [ "transport.compute_xs()\n", "nufission.compute_xs()\n", @@ -655,11 +710,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t1\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.11e-02 +/- 7.69e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t6.59e-04 +/- 2.97e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t8.95e-03 +/- 5.12e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t1.45e-02 +/- 7.10e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t4.71e-02 +/- 1.02e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t7.29e-02 +/- 8.86e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t1.11e-01 +/- 6.67e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t2.38e-01 +/- 7.71e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission.print_xs()" ] @@ -673,11 +751,141 @@ }, { "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", + "
cellgroup ingroup outnuclidemeanstd. dev.
63111total0.0769700.001012
62112total0.0878760.000344
61113total0.0004180.000023
60114total0.0000000.000000
59115total0.0000000.000000
58116total0.0000000.000000
57117total0.0000000.000000
56118total0.0000000.000000
55121total0.0000000.000000
54122total0.2664990.001265
\n", + "
" + ], + "text/plain": [ + " cell group in group out nuclide mean std. dev.\n", + "63 1 1 1 total 0.076970 0.001012\n", + "62 1 1 2 total 0.087876 0.000344\n", + "61 1 1 3 total 0.000418 0.000023\n", + "60 1 1 4 total 0.000000 0.000000\n", + "59 1 1 5 total 0.000000 0.000000\n", + "58 1 1 6 total 0.000000 0.000000\n", + "57 1 1 7 total 0.000000 0.000000\n", + "56 1 1 8 total 0.000000 0.000000\n", + "55 1 2 1 total 0.000000 0.000000\n", + "54 1 2 2 total 0.266499 0.001265" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = nuscatter.get_pandas_dataframe()\n", "df.head(10)" @@ -692,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "collapsed": true }, @@ -710,7 +918,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -738,11 +946,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: 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" + ] + } + ], "source": [ "# Import OpenMOC and the OpenMOC/OpenCG compatibility module\n", "import openmoc\n", @@ -764,7 +985,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "collapsed": true }, @@ -798,11 +1019,148 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ NORMAL ] Ray tracing for track segmentation...\n", + "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Computing the eigenvalue...\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685185\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.728847\tres = 4.513E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.695633\tres = 2.844E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.663357\tres = 4.557E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.632339\tres = 4.640E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.604187\tres = 4.676E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.579451\tres = 4.452E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.558474\tres = 4.094E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.541436\tres = 3.620E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.528380\tres = 3.051E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.519273\tres = 2.411E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.513991\tres = 1.724E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.512364\tres = 1.017E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.514171\tres = 3.165E-03\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.519155\tres = 3.527E-03\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.527038\tres = 9.693E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.537524\tres = 1.518E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.550310\tres = 1.990E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.565096\tres = 2.379E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.581585\tres = 2.687E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.599493\tres = 2.918E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.618548\tres = 3.079E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.638497\tres = 3.179E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.659105\tres = 3.225E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.680156\tres = 3.228E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.701456\tres = 3.194E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.722831\tres = 3.132E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.744127\tres = 3.047E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.765209\tres = 2.946E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.785961\tres = 2.833E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.806283\tres = 2.712E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.826093\tres = 2.586E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.845324\tres = 2.457E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.863921\tres = 2.328E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.881841\tres = 2.200E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.899055\tres = 2.074E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.915540\tres = 1.952E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.931284\tres = 1.834E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.946283\tres = 1.720E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.960536\tres = 1.610E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.974052\tres = 1.506E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.986841\tres = 1.407E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.998920\tres = 1.313E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 1.010307\tres = 1.224E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 1.021023\tres = 1.140E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 1.031091\tres = 1.061E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 1.040537\tres = 9.861E-03\n", + "[ NORMAL ] Iteration 49:\tk_eff = 1.049386\tres = 9.161E-03\n", + "[ NORMAL ] Iteration 50:\tk_eff = 1.057664\tres = 8.504E-03\n", + "[ NORMAL ] Iteration 51:\tk_eff = 1.065399\tres = 7.889E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 1.072617\tres = 7.313E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 1.079345\tres = 6.775E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.085609\tres = 6.273E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.091436\tres = 5.804E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.096851\tres = 5.367E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.101877\tres = 4.961E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.106540\tres = 4.583E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.110860\tres = 4.231E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.114861\tres = 3.905E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.118563\tres = 3.602E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.121986\tres = 3.321E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.125149\tres = 3.060E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.128069\tres = 2.819E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.130764\tres = 2.595E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.133248\tres = 2.389E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.135538\tres = 2.197E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.137648\tres = 2.021E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.139590\tres = 1.858E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.141377\tres = 1.707E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.143021\tres = 1.568E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.144531\tres = 1.440E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.145920\tres = 1.322E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.147195\tres = 1.213E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.148365\tres = 1.113E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.149440\tres = 1.020E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.150425\tres = 9.356E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.151329\tres = 8.574E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.152157\tres = 7.856E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.152916\tres = 7.196E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.153612\tres = 6.590E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.154249\tres = 6.033E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.154832\tres = 5.522E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.155366\tres = 5.053E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.155855\tres = 4.623E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.156302\tres = 4.229E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.156710\tres = 3.866E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.157084\tres = 3.535E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.157426\tres = 3.230E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.157738\tres = 2.952E-04\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.158023\tres = 2.697E-04\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.158284\tres = 2.464E-04\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.158522\tres = 2.251E-04\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.158739\tres = 2.055E-04\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.158937\tres = 1.876E-04\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.159119\tres = 1.713E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.159284\tres = 1.564E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.159435\tres = 1.428E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.159573\tres = 1.301E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.159699\tres = 1.188E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.159813\tres = 1.083E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.159917\tres = 9.880E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.160013\tres = 9.009E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.160100\tres = 8.222E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.160179\tres = 7.487E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.160251\tres = 6.824E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.160317\tres = 6.223E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.160376\tres = 5.675E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.160431\tres = 5.174E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.160481\tres = 4.715E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.160527\tres = 4.298E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.160568\tres = 3.910E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.160605\tres = 3.561E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.160640\tres = 3.242E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.160671\tres = 2.960E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.160699\tres = 2.689E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.160725\tres = 2.452E-05\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.160749\tres = 2.232E-05\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.160770\tres = 2.034E-05\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.160790\tres = 1.855E-05\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.160807\tres = 1.687E-05\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.160824\tres = 1.538E-05\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.160838\tres = 1.399E-05\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.160852\tres = 1.280E-05\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.160864\tres = 1.149E-05\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.160875\tres = 1.061E-05\n" + ] + } + ], "source": [ "# Generate tracks for OpenMOC\n", "openmoc_geometry.initializeFlatSourceRegions()\n", @@ -823,11 +1181,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.161200\n", + "openmoc keff = 1.160875\n", + "bias [pcm]: -32.5\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -876,7 +1244,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -910,7 +1278,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -936,7 +1304,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": { "collapsed": true }, @@ -965,11 +1333,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -1003,11 +1382,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" + ] + } + ], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", @@ -1033,7 +1423,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -1060,7 +1450,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": { "collapsed": false }, diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 579557ae8..5659ec4d3 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -16,16 +16,30 @@ if sys.version_info[0] >= 3: basestring = str +# Supported cross section types +MGXS_TYPES = ['total', + 'transport', + 'absorption', + 'capture', + 'fission', + 'nu-fission', + 'scatter', + 'nu-scatter', + 'scatter matrix', + 'nu-scatter matrix', + 'chi'] + + # Supported domain types # TODO: Implement Mesh domains -DOMAIN_TYPES = ['cell', +_DOMAIN_TYPES = ['cell', 'distribcell', 'universe', 'material'] # Supported domain classes # TODO: Implement Mesh domains -DOMAINS = [openmc.Cell, +_DOMAINS = [openmc.Cell, openmc.Universe, openmc.Material] @@ -47,7 +61,7 @@ class MGXS(object): energy_groups : EnergyGroups The energy group structure for energy condensation by_nuclide : bool - If true, computes multi-group cross sections for each nuclide in domain + If true, computes cross sections for each nuclide in domain name : str, optional Name of the multi-group cross section. Used as a label to identify tallies in OpenMC 'tallies.xml' file. @@ -59,7 +73,7 @@ class MGXS(object): rxn_type : str Reaction type (e.g., 'total', 'nu-fission', etc.) by_nuclide : bool - If true, computes multi-group cross sections for each nuclide in domain + If true, computes cross sections for each nuclide in domain domain : Material or Cell or Universe Domain for spatial homogenization domain_type : {'material', 'cell', 'distribcell', 'universe'} @@ -197,12 +211,12 @@ class MGXS(object): @domain.setter def domain(self, domain): - cv.check_type('domain', domain, tuple(DOMAINS)) + cv.check_type('domain', domain, tuple(_DOMAINS)) self._domain = domain @domain_type.setter def domain_type(self, domain_type): - cv.check_value('domain type', domain_type, tuple(DOMAIN_TYPES)) + cv.check_value('domain type', domain_type, tuple(_DOMAIN_TYPES)) self._domain_type = domain_type @energy_groups.setter @@ -211,6 +225,70 @@ class MGXS(object): self._energy_groups = energy_groups self._num_groups = energy_groups.num_groups + @staticmethod + def get_mgxs(mgxs_type, domain=None, domain_type=None, + energy_groups=None, by_nuclide=False, name=''): + """Return a MGXS subclass object for some energy group structure within + some spatial domain for some reaction type. + + This is a factory method which can be used to quickly create MGXS + subclass objects for various reaction types. + + Parameters + ---------- + mgxs_type : {'total', 'transport', 'absorption', 'capture', 'fission', + 'nu-fission', 'scatter', 'nu-scatter', 'scatter matrix', + 'nu-scatter matrix', 'chi'} + The type of multi-group cross section object to return + domain : Material or Cell or Universe + The domain for spatial homogenization + domain_type : {'material', 'cell', 'distribcell', 'universe'} + The domain type for spatial homogenization + energy_groups : EnergyGroups + The energy group structure for energy condensation + by_nuclide : bool + If true, computes cross sections for each nuclide in domain + name : str, optional + Name of the multi-group cross section. Used as a label to identify + tallies in OpenMC 'tallies.xml' file. + + Returns + ------- + MGXS + A subclass of the abstract MGXS class for the multi-group cross + section type requeted by the user + + """ + + cv.check_value('mgxs_type', mgxs_type, MGXS_TYPES) + + if mgxs_type == 'total': + mgxs = TotalXS(domain, domain_type, energy_groups) + elif mgxs_type == 'transport': + mgxs = TransportXS(domain, domain_type, energy_groups) + elif mgxs_type == 'absorption': + mgxs = AbsorptionXS(domain, domain_type, energy_groups) + elif mgxs_type == 'capture': + mgxs = CaptureXS(domain, domain_type, energy_groups) + elif mgxs_type == 'fission': + mgxs = FissionXS(domain, domain_type, energy_groups) + elif mgxs_type == 'nu-fission': + mgxs = NuFissionXS(domain, domain_type, energy_groups) + elif mgxs_type == 'scatter': + mgxs = ScatterXS(domain, domain_type, energy_groups) + elif mgxs_type == 'nu-scatter': + mgxs = NuScatterXS(domain, domain_type, energy_groups) + elif mgxs_type == 'scatter matrix': + mgxs = ScatterMatrixXS(domain, domain_type, energy_groups) + elif mgxs_type == 'nu-scatter matrix': + mgxs = NuScatterMatrixXS(domain, domain_type, energy_groups) + elif mgxs_type == 'chi': + mgxs = Chi(domain, domain_type, energy_groups) + + mgxs.by_nuclide = by_nuclide + mgxs.name = name + return mgxs + def get_all_nuclides(self): """Get all nuclides in the cross section's spatial domain. @@ -1459,7 +1537,7 @@ class NuScatterXS(MGXS): # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter'] - estimator = 'tracklength' + estimator = 'analog' keys = scores # Create the non-domain specific Filters for the Tallies From 32f67d3d0abfb5e6d0f626251c0d64536791e44b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 9 Oct 2015 00:15:09 -0400 Subject: [PATCH 084/130] Implemented new openmc.mgxs.Library class --- .../examples/multi-group-cross-sections.ipynb | 415 ++++++++++++++++-- openmc/mgxs/__init__.py | 3 +- openmc/mgxs/groups.py | 2 +- openmc/mgxs/library.py | 286 ++++++++++++ openmc/mgxs/mgxs.py | 39 +- 5 files changed, 692 insertions(+), 53 deletions(-) create mode 100644 openmc/mgxs/library.py diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 652c21a11..3996543e1 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -1480,7 +1480,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1520,11 +1520,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Delete old HDF5 files\n", "!rm *.h5\n", @@ -1550,7 +1561,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1571,7 +1582,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1607,11 +1618,46 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 5.91e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 4.03e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.48e+01 +/- 5.56e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.84e+01 +/- 8.48e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 1.25e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 7.98e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 5.73e-01%\n", + "\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 6.74e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 8.28e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t4.75e-04 +/- 7.97e+00%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 7.56e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.22e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 7.97e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 5.72e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" @@ -1626,11 +1672,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 6.42e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.52e-03 +/- 3.96e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 5.56e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.32e-02 +/- 8.48e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.25e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 7.98e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 5.73e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='macro', nuclides='sum')" @@ -1645,11 +1714,141 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "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", + "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211O-161.5600980.017801
1271000211H-10.2348770.010096
1241000212O-160.2882360.004397
1251000212H-11.5878150.007847
1221000213O-160.0000000.000000
1231000213H-10.0101220.000513
1201000214O-160.0000000.000000
1211000214H-10.0000000.000000
1181000215O-160.0000000.000000
1191000215H-10.0000000.000000
\n", + "
" + ], + "text/plain": [ + " cell group in group out nuclide mean std. dev.\n", + "126 10002 1 1 O-16 1.560098 0.017801\n", + "127 10002 1 1 H-1 0.234877 0.010096\n", + "124 10002 1 2 O-16 0.288236 0.004397\n", + "125 10002 1 2 H-1 1.587815 0.007847\n", + "122 10002 1 3 O-16 0.000000 0.000000\n", + "123 10002 1 3 H-1 0.010122 0.000513\n", + "120 10002 1 4 O-16 0.000000 0.000000\n", + "121 10002 1 4 H-1 0.000000 0.000000\n", + "118 10002 1 5 O-16 0.000000 0.000000\n", + "119 10002 1 5 H-1 0.000000 0.000000" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", @@ -1665,7 +1864,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -1693,11 +1892,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create plot of the H-1 scattering matrix\n", "fig = plt.subplot(121)\n", @@ -1722,7 +1932,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -1744,22 +1954,133 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\ttransport\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 5.85e-01%\n", + "\n", + "\tNuclide =\tO-16\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", + "\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "condense_xs.print_xs()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "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", + "
cellgroup innuclidemeanstd. dev.
3100001U-2389.5893230.038756
4100001O-163.1591010.012939
5100001U-23521.0952560.257787
0100002U-23811.1788440.065428
1100002O-163.8000270.024538
2100002U-235485.5135302.418761
\n", + "
" + ], + "text/plain": [ + " cell group in nuclide mean std. dev.\n", + "3 10000 1 U-238 9.589323 0.038756\n", + "4 10000 1 O-16 3.159101 0.012939\n", + "5 10000 1 U-235 21.095256 0.257787\n", + "0 10000 2 U-238 11.178844 0.065428\n", + "1 10000 2 O-16 3.800027 0.024538\n", + "2 10000 2 U-235 485.513530 2.418761" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = condense_xs.get_pandas_dataframe(xs_type='micro')\n", "df" @@ -1781,7 +2102,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "metadata": { "collapsed": true }, @@ -1803,7 +2124,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -1851,7 +2172,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -1879,11 +2200,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 50, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.227616\n", + "openmoc keff = 1.225325\n", + "bias [pcm]: -229.1\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -1904,11 +2235,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n" + ] + } + ], "source": [ "su.make_opencg_geometry()\n", "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)\n", @@ -1945,7 +2292,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -1963,11 +2310,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 53, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.227616\n", + "openmoc keff = 1.227096\n", + "bias [pcm]: -52.0\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py index b6f928b09..91eb811f4 100644 --- a/openmc/mgxs/__init__.py +++ b/openmc/mgxs/__init__.py @@ -1,2 +1,3 @@ from groups import EnergyGroups -from mgxs import * \ No newline at end of file +from library import Library +from mgxs import * diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index dfaca9be9..53f032f51 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -1,5 +1,5 @@ from collections import Iterable -from numbers import Real, Integral +from numbers import Real import copy import sys diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py new file mode 100644 index 000000000..6f9d40a55 --- /dev/null +++ b/openmc/mgxs/library.py @@ -0,0 +1,286 @@ +import sys +import copy +from numbers import Integral + +import openmc +import openmc.mgxs +import openmc.checkvalue as cv + + +if sys.version_info[0] >= 3: + basestring = str + + +class Library(object): + + def __init__(self, openmc_geometry, by_nuclide=False, + mgxs_types=None, name=''): + + self._name = '' + self._openmc_geometry = None + self._by_nuclide = None + self._mgxs_types = [] + self._domain_type = None + self._energy_groups = None + self._all_mgxs = {} + + self.name = name + self.openmc_geometry = openmc_geometry + self.by_nuclide = by_nuclide + + if mgxs_types is not None: + self.mgxs_types = mgxs_types + + def __deepcopy__(self, memo): + existing = memo.get(id(self)) + + # If this is the first time we have tried to copy this object, copy it + if existing is None: + clone = type(self).__new__(type(self)) + clone._name = self.name + clone._openmc_geometry = self.openmc_geometry + clone._by_nuclide = self.by_nuclide + clone._mgxs_types = self.mgxs_types + clone._domain_type = self.domain_type + clone._energy_groups = copy.deepcopy(self.energy_groups, memo) + clone._all_mgxs = self.all_mgxs + + clone._all_mgxs = {} + for domain in self.domains: + clone.all_mgxs[domain.id] = {} + for mgxs_type in self.mgxs_types: + mgxs = copy.deepcopy(self.all_mgxs[domain.id][mgxs_type]) + clone.all_mgxs[domain.id][mgxs_type] = mgxs + + memo[id(self)] = clone + + return clone + + # If this object has been copied before, return the first copy made + else: + return existing + + @property + def openmc_geometry(self): + return self._openmc_geometry + + @property + def name(self): + return self._name + + @property + def mgxs_types(self): + return self._mgxs_types + + @property + def by_nuclide(self): + return self._by_nuclide + + @property + def domains(self): + if self.domain_type is None: + raise ValueError('Unable to get all domains without a domain type') + + if self.domain_type == 'material': + return self.openmc_geometry.get_all_materials() + elif self.domain_type == 'cell' or self.domain_type == 'distribcell': + return self.openmc_geometry.get_all_material_cells() + elif self.domain_type == 'universe': + return self.openmc_geometry.get_all_universes() + + @property + def domain_type(self): + return self._domain_type + + @property + def energy_groups(self): + return self._energy_groups + + @property + def num_groups(self): + return self.energy_groups.num_groups + + @property + def all_mgxs(self): + return self._all_mgxs + + @openmc_geometry.setter + def openmc_geometry(self, openmc_geometry): + cv.check_type('openmc_geometry', openmc_geometry, openmc.Geometry) + self._openmc_geometry = openmc_geometry + + @name.setter + def name(self, name): + cv.check_type('name', name, basestring) + self._name = name + + @mgxs_types.setter + def mgxs_types(self, mgxs_types): + if mgxs_types == 'all': + self._mgxs_types = openmc.mgxs.MGXS_TYPES + else: + cv.check_iterable_type('mgxs_types', mgxs_types, basestring) + for mgxs_type in mgxs_types: + cv.check_value('mgxs_type', mgxs_type, openmc.mgxs.MGXS_TYPES) + self._mgxs_types = mgxs_types + + @by_nuclide.setter + def by_nuclide(self, by_nuclide): + cv.check_type('by_nuclide', by_nuclide, bool) + self._by_nuclide = by_nuclide + + @domain_type.setter + def domain_type(self, domain_type): + cv.check_value('domain type', domain_type, tuple(openmc.mgxs.DOMAIN_TYPES)) + self._domain_type = domain_type + + @energy_groups.setter + def energy_groups(self, energy_groups): + cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) + self._energy_groups = energy_groups + + def build_library(self): + """ + """ + + # Initialize MGXS for each domain and mgxs type and store in dictionary + for domain in self.domains: + self.all_mgxs[domain.id] = {} + for mgxs_type in self.mgxs_types: + mgxs = openmc.mgxs.MGXS.get_mgxs(mgxs_type, name=self.name) + mgxs.domain = domain + mgxs.domain_type = self.domain_type + mgxs.energy_groups = self.energy_groups + mgxs.by_nuclide = self.by_nuclide + mgxs.create_tallies() + self.all_mgxs[domain.id][mgxs_type] = mgxs + + def add_to_tallies_file(self, tallies_file): + """ + + NOTE: This assumes that build_library() has been called + + :param tallies_file: + :return: + """ + + cv.check_type('tallies_file', tallies_file, openmc.TalliesFile) + + # Add tallies from each MGXS for each domain and mgxs type + 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(): + tallies_file.add_tally(tally, merge=True) + + def load_from_statepoint(self, statepoint): + """ + + :param statepoint: + :return: + """ + + cv.check_type('statepoint', statepoint, openmc.StatePoint) + + # Load tallies for each MGXS for each domain and mgxs type + for domain in self.domains: + for mgxs_type in self.mgxs_types: + mgxs = self.get_mgxs(domain, mgxs_type) + mgxs.load_from_statepoint(statepoint) + mgxs.compute_xs() + + def get_mgxs(self, domain, mgxs_type): + """ + + :param domain: + :param mgxs_type: + :return: + """ + + if self.domain_type == 'material': + cv.check_type('domain', domain, (openmc.Material, Integral)) + elif self.domain_type == 'cell' or self.domain_type == 'distribcell': + cv.check_type('domain', domain, (openmc.Cell, Integral)) + elif self.domain_type == 'universe': + cv.check_type('domain', domain, (openmc.Universe, Integral)) + + # Check that requested domain is included in library + if cv._isinstance(domain, Integral): + domain_id = domain + for domain in self.domains: + if domain_id == domain.id: + break + else: + msg = 'Unable to find MGXS for {0} "{1}" in ' \ + 'library'.format(self.domain_type, domain) + raise ValueError(msg) + else: + domain_id = domain.id + + # 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) + + return self.all_mgxs[domain_id][mgxs_type] + + def get_condensed_library(self, coarse_groups): + """ + + :param coarse_groups: + :return: + """ + + if self.energy_groups is None: + msg = 'Unable to get a condensed coarse group cross section ' \ + 'library since the fine energy groups have not yet been set' + raise ValueError(msg) + + cv.check_type('coarse_groups', coarse_groups, openmc.mgxs.EnergyGroups) + cv.check_less_than('coarse groups', coarse_groups.num_groups, + self.num_groups, equality=True) + cv.check_value('upper coarse energy', coarse_groups.group_edges[-1], + [self.energy_groups.group_edges[-1]]) + cv.check_value('lower coarse energy', coarse_groups.group_edges[0], + [self.energy_groups.group_edges[0]]) + + # Clone this Library to initialize the condensed version + condensed_library = copy.deepcopy(self) + condensed_library.energy_groups = coarse_groups + + # Condense the MGXS for each domain and mgxs type + for domain in self.domains: + for mgxs_type in self.mgxs_types: + mgxs = condensed_library.get_mgxs(domain, mgxs_type) + condensed_mgxs = mgxs.get_condensed_xs(coarse_groups) + condensed_library.all_mgxs[domain.id][mgxs_type] = condensed_mgxs + + return condensed_library + + def build_hdf5_store(self, filename='mgxs', directory='mgxs', xs_type='macro'): + """Export the multi-group cross section library to an HDF5 binary file. + + This method constructs an HDF5 file which stores the multi-group + cross section data. The data is stored in a hierarchy of HDF5 groups + from the domain type, domain id, subdomain id (for distribcell domains), + nuclides and cross section types. Two datasets for the mean and standard + deviation are stored for each subdomain entry in the HDF5 file. + + NOTE: This requires the h5py Python package. + + Parameters + ---------- + filename : str + Filename for the HDF5 file (default is 'mgxs') + directory : str + Directory for the HDF5 file (default is 'mgxs') + xs_type: {'macro', 'micro'} + Store the macro or micro cross section in units of cm^-1 or barns + + """ + + # Load tallies for each MGXS for each domain and mgxs type + for domain in self.domains: + for mgxs_type in self.mgxs_types: + mgxs = self.all_mgxs[domain.id][mgxs_type] + mgxs.build_hdf5_store(filename, directory, xs_type) \ No newline at end of file diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 5659ec4d3..07d0e10ab 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -32,7 +32,7 @@ MGXS_TYPES = ['total', # Supported domain types # TODO: Implement Mesh domains -_DOMAIN_TYPES = ['cell', +DOMAIN_TYPES = ['cell', 'distribcell', 'universe', 'material'] @@ -80,8 +80,6 @@ class MGXS(object): Domain type for spatial homogenization energy_groups : EnergyGroups Energy group structure for energy condensation - num_groups : Integral - Number of energy groups tallies : dict OpenMC tallies needed to compute the multi-group cross section xs_tally : Tally @@ -102,8 +100,7 @@ class MGXS(object): self._domain = None self._domain_type = None self._energy_groups = None - self._num_groups = None - self._tallies = dict() + self._tallies = {} self._xs_tally = None self.name = name @@ -128,10 +125,9 @@ class MGXS(object): clone._domain = self.domain clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) - clone._num_groups = self.num_groups clone._xs_tally = copy.deepcopy(self.xs_tally, memo) - clone._tallies = dict() + clone._tallies = {} for tally_type, tally in self.tallies.items(): clone.tallies[tally_type] = copy.deepcopy(tally, memo) @@ -169,7 +165,7 @@ class MGXS(object): @property def num_groups(self): - return self._num_groups + return self.energy_groups.num_groups @property def tallies(self): @@ -185,16 +181,6 @@ class MGXS(object): domain_filter = tally.find_filter(self.domain_type) return domain_filter.num_bins - @name.setter - def name(self, name): - cv.check_type('name', name, basestring) - self._name = name - - @by_nuclide.setter - def by_nuclide(self, by_nuclide): - cv.check_type('by_nuclide', by_nuclide, bool) - self._by_nuclide = by_nuclide - @property def num_nuclides(self): if self.by_nuclide: @@ -209,6 +195,16 @@ class MGXS(object): else: return 'sum' + @name.setter + def name(self, name): + cv.check_type('name', name, basestring) + self._name = name + + @by_nuclide.setter + def by_nuclide(self, by_nuclide): + cv.check_type('by_nuclide', by_nuclide, bool) + self._by_nuclide = by_nuclide + @domain.setter def domain(self, domain): cv.check_type('domain', domain, tuple(_DOMAINS)) @@ -216,14 +212,13 @@ class MGXS(object): @domain_type.setter def domain_type(self, domain_type): - cv.check_value('domain type', domain_type, tuple(_DOMAIN_TYPES)) + cv.check_value('domain type', domain_type, tuple(DOMAIN_TYPES)) self._domain_type = domain_type @energy_groups.setter def energy_groups(self, energy_groups): cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) self._energy_groups = energy_groups - self._num_groups = energy_groups.num_groups @staticmethod def get_mgxs(mgxs_type, domain=None, domain_type=None, @@ -295,7 +290,7 @@ class MGXS(object): Returns ------- list of str - A list of the string names for each nuclide in the problem domain + A list of the string names for each nuclide in the spatial domain (e.g., ['U-235', 'U-238', 'O-16']) Raises @@ -362,7 +357,7 @@ class MGXS(object): ------- ndarray of Real An array of the atomic number densities (atom/b-cm) for each of the - nuclides in the problem domain + nuclides in the spatial domain Raises ------ From 3b9c61a6d8df13b6fee1b02b0cb2083608793655 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 9 Oct 2015 00:47:06 -0400 Subject: [PATCH 085/130] No longer using deprecated NumPy elementwise comparison for MGXS.get_condensed_xs(...) routine --- .../examples/multi-group-cross-sections.ipynb | 504 +++--------------- openmc/mgxs/mgxs.py | 8 +- 2 files changed, 71 insertions(+), 441 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 3996543e1..0c0250437 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -13,15 +13,30 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true + "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: 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" + ] + } + ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "import openmc\n", "import openmc.mgxs as mgxs\n", + "import openmoc\n", + "from openmoc.compatible import get_openmoc_geometry\n", "\n", "%matplotlib inline" ] @@ -463,7 +478,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 19:56:45\n", + " Date/Time: 2015-10-09 00:44:07\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -548,20 +563,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.5500E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 1.3254E+01 seconds\n", - " Time in transport only = 1.3238E+01 seconds\n", - " Time in inactive batches = 1.8670E+00 seconds\n", - " Time in active batches = 1.1387E+01 seconds\n", - " Time synchronizing fission bank = 8.0000E-03 seconds\n", - " Sampling source sites = 7.0000E-03 seconds\n", + " Total time for initialization = 4.1300E-01 seconds\n", + " Reading cross sections = 1.0500E-01 seconds\n", + " Total time in simulation = 1.3459E+01 seconds\n", + " Time in transport only = 1.3445E+01 seconds\n", + " Time in inactive batches = 2.1740E+00 seconds\n", + " Time in active batches = 1.1285E+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 = 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.3719E+01 seconds\n", - " Calculation Rate (inactive) = 13390.5 neutrons/second\n", - " Calculation Rate (active) = 8781.94 neutrons/second\n", + " Total time elapsed = 1.3882E+01 seconds\n", + " Calculation Rate (inactive) = 11499.5 neutrons/second\n", + " Calculation Rate (active) = 8861.32 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -950,25 +965,8 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: 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" - ] - } - ], + "outputs": [], "source": [ - "# Import OpenMOC and the OpenMOC/OpenCG compatibility module\n", - "import openmoc\n", - "from openmoc.compatible import get_openmoc_geometry\n", - "\n", "# Create an OpenCG Geometry from the OpenMC Geometry stored in the summary\n", "su.make_opencg_geometry()\n", "\n", @@ -1028,8 +1026,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", "[ NORMAL ] Iteration 0:\tk_eff = 0.685185\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", @@ -1386,29 +1383,13 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", + "root_cell.region = +min_x & -max_x & +min_y & -max_y\n", "root_cell.fill = pin_cell_universe\n", "\n", - "# Add boundary planes\n", - "root_cell.add_surface(min_x, halfspace=+1)\n", - "root_cell.add_surface(max_x, halfspace=-1)\n", - "root_cell.add_surface(min_y, halfspace=+1)\n", - "root_cell.add_surface(max_y, halfspace=-1)\n", - "\n", "# Create root Universe\n", "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", "root_universe.add_cell(root_cell)" @@ -1480,7 +1461,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1520,22 +1501,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Delete old HDF5 files\n", "!rm *.h5\n", @@ -1561,7 +1531,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1582,7 +1552,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1618,46 +1588,11 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 5.91e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 4.03e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t5.48e+01 +/- 5.56e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.84e+01 +/- 8.48e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 1.25e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 7.98e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 5.73e-01%\n", - "\n", - "\tNuclide =\tU-238\n", - "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 6.74e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 8.28e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t4.75e-04 +/- 7.97e+00%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 7.56e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.22e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 7.97e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 5.72e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" @@ -1672,34 +1607,11 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\tnu-fission\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 6.42e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.52e-03 +/- 3.96e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 5.56e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.32e-02 +/- 8.48e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.25e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 7.98e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 5.73e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='macro', nuclides='sum')" @@ -1714,141 +1626,11 @@ }, { "cell_type": "code", - "execution_count": 41, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211O-161.5600980.017801
1271000211H-10.2348770.010096
1241000212O-160.2882360.004397
1251000212H-11.5878150.007847
1221000213O-160.0000000.000000
1231000213H-10.0101220.000513
1201000214O-160.0000000.000000
1211000214H-10.0000000.000000
1181000215O-160.0000000.000000
1191000215H-10.0000000.000000
\n", - "
" - ], - "text/plain": [ - " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 O-16 1.560098 0.017801\n", - "127 10002 1 1 H-1 0.234877 0.010096\n", - "124 10002 1 2 O-16 0.288236 0.004397\n", - "125 10002 1 2 H-1 1.587815 0.007847\n", - "122 10002 1 3 O-16 0.000000 0.000000\n", - "123 10002 1 3 H-1 0.010122 0.000513\n", - "120 10002 1 4 O-16 0.000000 0.000000\n", - "121 10002 1 4 H-1 0.000000 0.000000\n", - "118 10002 1 5 O-16 0.000000 0.000000\n", - "119 10002 1 5 H-1 0.000000 0.000000" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", @@ -1864,7 +1646,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": { "collapsed": false }, @@ -1892,22 +1674,11 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "data": { - "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create plot of the H-1 scattering matrix\n", "fig = plt.subplot(121)\n", @@ -1932,7 +1703,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": { "collapsed": true }, @@ -1954,133 +1725,22 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Multi-Group XS\n", - "\tReaction Type =\ttransport\n", - "\tDomain Type =\tcell\n", - "\tDomain ID =\t10000\n", - "\tNuclide =\tU-238\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 5.85e-01%\n", - "\n", - "\tNuclide =\tO-16\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", - "\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", - "\n", - "\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "condense_xs.print_xs()" ] }, { "cell_type": "code", - "execution_count": 46, + "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cellgroup innuclidemeanstd. dev.
3100001U-2389.5893230.038756
4100001O-163.1591010.012939
5100001U-23521.0952560.257787
0100002U-23811.1788440.065428
1100002O-163.8000270.024538
2100002U-235485.5135302.418761
\n", - "
" - ], - "text/plain": [ - " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-238 9.589323 0.038756\n", - "4 10000 1 O-16 3.159101 0.012939\n", - "5 10000 1 U-235 21.095256 0.257787\n", - "0 10000 2 U-238 11.178844 0.065428\n", - "1 10000 2 O-16 3.800027 0.024538\n", - "2 10000 2 U-235 485.513530 2.418761" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = condense_xs.get_pandas_dataframe(xs_type='micro')\n", "df" @@ -2102,9 +1762,9 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": null, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -2124,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "metadata": { "collapsed": false }, @@ -2172,7 +1832,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": null, "metadata": { "collapsed": false }, @@ -2200,21 +1860,11 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.227616\n", - "openmoc keff = 1.225325\n", - "bias [pcm]: -229.1\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -2235,27 +1885,11 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:711: DeprecationWarning: elementwise comparison failed; this will raise the error in the future.\n" - ] - } - ], + "outputs": [], "source": [ "su.make_opencg_geometry()\n", "openmoc_geometry = get_openmoc_geometry(su.opencg_geometry)\n", @@ -2292,7 +1926,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": null, "metadata": { "collapsed": false }, @@ -2310,21 +1944,11 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": null, "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "openmc keff = 1.227616\n", - "openmoc keff = 1.227096\n", - "bias [pcm]: -52.0\n" - ] - } - ], + "outputs": [], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 07d0e10ab..940586f32 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -703,7 +703,13 @@ class MGXS(object): # Sum across all applicable fine energy group filters for i, filter in enumerate(tally.filters): - if 'energy' in filter.type and np.all(filter.bins == fine_edges): + if 'energy' not in filter.type: + continue + elif len(filter.bins) != len(fine_edges): + continue + elif not np.allclose(filter.bins, fine_edges): + continue + else: filter.bins = coarse_groups.group_edges mean = np.add.reduceat(mean, energy_indices, axis=i) std_dev = np.add.reduceat(std_dev**2, energy_indices, axis=i) From a508c3b42073a0219ba5e1bfd77302407366f7db Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 9 Oct 2015 16:07:42 -0400 Subject: [PATCH 086/130] Added docstrings to MGXS Library object --- .../examples/multi-group-cross-sections.ipynb | 426 ++++++++++++++++-- openmc/mgxs/library.py | 202 +++++++-- openmc/mgxs/mgxs.py | 143 +++--- 3 files changed, 638 insertions(+), 133 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 0c0250437..cbd81f154 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -478,7 +478,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-09 00:44:07\n", + " Date/Time: 2015-10-09 16:04:33\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -563,20 +563,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.1300E-01 seconds\n", - " Reading cross sections = 1.0500E-01 seconds\n", - " Total time in simulation = 1.3459E+01 seconds\n", - " Time in transport only = 1.3445E+01 seconds\n", - " Time in inactive batches = 2.1740E+00 seconds\n", - " Time in active batches = 1.1285E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 4.3000E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 1.5218E+01 seconds\n", + " Time in transport only = 1.5180E+01 seconds\n", + " Time in inactive batches = 1.8800E+00 seconds\n", + " Time in active batches = 1.3338E+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 = 1.0000E-03 seconds\n", - " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.3882E+01 seconds\n", - " Calculation Rate (inactive) = 11499.5 neutrons/second\n", - " Calculation Rate (active) = 8861.32 neutrons/second\n", + " Total time for finalization = 8.0000E-03 seconds\n", + " Total time elapsed = 1.5664E+01 seconds\n", + " Calculation Rate (inactive) = 13297.9 neutrons/second\n", + " Calculation Rate (active) = 7497.38 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1026,7 +1026,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.685185\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", @@ -1461,7 +1462,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1501,11 +1502,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Delete old HDF5 files\n", "!rm *.h5\n", @@ -1531,7 +1543,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1552,7 +1564,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1588,11 +1600,46 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 5.91e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 4.03e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.48e+01 +/- 5.56e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.84e+01 +/- 8.48e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 1.25e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 7.98e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 5.73e-01%\n", + "\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [barns]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 6.74e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 8.28e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t4.75e-04 +/- 7.97e+00%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 7.56e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.22e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 7.97e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 5.72e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='micro', nuclides=['U-235', 'U-238'])" @@ -1607,11 +1654,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\tnu-fission\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 6.42e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.52e-03 +/- 3.96e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 5.56e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.32e-02 +/- 8.48e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.25e+00%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.09e+00%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 7.98e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 5.73e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "nufission = xs_library[fuel_cell.id]['nu-fission']\n", "nufission.print_xs(xs_type='macro', nuclides='sum')" @@ -1626,11 +1696,141 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "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", + "
cellgroup ingroup outnuclidemeanstd. dev.
1261000211O-161.5600980.017801
1271000211H-10.2348770.010096
1241000212O-160.2882360.004397
1251000212H-11.5878150.007847
1221000213O-160.0000000.000000
1231000213H-10.0101220.000513
1201000214O-160.0000000.000000
1211000214H-10.0000000.000000
1181000215O-160.0000000.000000
1191000215H-10.0000000.000000
\n", + "
" + ], + "text/plain": [ + " cell group in group out nuclide mean std. dev.\n", + "126 10002 1 1 O-16 1.560098 0.017801\n", + "127 10002 1 1 H-1 0.234877 0.010096\n", + "124 10002 1 2 O-16 0.288236 0.004397\n", + "125 10002 1 2 H-1 1.587815 0.007847\n", + "122 10002 1 3 O-16 0.000000 0.000000\n", + "123 10002 1 3 H-1 0.010122 0.000513\n", + "120 10002 1 4 O-16 0.000000 0.000000\n", + "121 10002 1 4 H-1 0.000000 0.000000\n", + "118 10002 1 5 O-16 0.000000 0.000000\n", + "119 10002 1 5 H-1 0.000000 0.000000" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "nuscatter = xs_library[moderator_cell.id]['nu-scatter']\n", "df = nuscatter.get_pandas_dataframe(xs_type='micro')\n", @@ -1646,7 +1846,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -1674,11 +1874,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create plot of the H-1 scattering matrix\n", "fig = plt.subplot(121)\n", @@ -1703,7 +1914,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -1725,22 +1936,133 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Multi-Group XS\n", + "\tReaction Type =\ttransport\n", + "\tDomain Type =\tcell\n", + "\tDomain ID =\t10000\n", + "\tNuclide =\tU-238\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 5.85e-01%\n", + "\n", + "\tNuclide =\tO-16\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", + "\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", + "\n", + "\n", + "\n" + ] + } + ], "source": [ "condense_xs.print_xs()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "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", + "
cellgroup innuclidemeanstd. dev.
3100001U-2389.5893230.038756
4100001O-163.1591010.012939
5100001U-23521.0952560.257787
0100002U-23811.1788440.065428
1100002O-163.8000270.024538
2100002U-235485.5135302.418761
\n", + "
" + ], + "text/plain": [ + " cell group in nuclide mean std. dev.\n", + "3 10000 1 U-238 9.589323 0.038756\n", + "4 10000 1 O-16 3.159101 0.012939\n", + "5 10000 1 U-235 21.095256 0.257787\n", + "0 10000 2 U-238 11.178844 0.065428\n", + "1 10000 2 O-16 3.800027 0.024538\n", + "2 10000 2 U-235 485.513530 2.418761" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = condense_xs.get_pandas_dataframe(xs_type='micro')\n", "df" @@ -1762,7 +2084,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -1784,7 +2106,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -1832,7 +2154,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -1860,11 +2182,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 50, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.227616\n", + "openmoc keff = 1.225325\n", + "bias [pcm]: -229.1\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", @@ -1885,7 +2217,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -1926,7 +2258,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -1944,11 +2276,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 53, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "openmc keff = 1.227616\n", + "openmoc keff = 1.227096\n", + "bias [pcm]: -52.0\n" + ] + } + ], "source": [ "# Print report of keff and bias with OpenMC\n", "openmoc_keff = solver.getKeff()\n", diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 6f9d40a55..a7276bc9e 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -12,6 +12,51 @@ if sys.version_info[0] >= 3: class Library(object): + """A multi-group cross section library for some energy group structure. + + This class can be used for both OpenMC input generation and tally data + post-processing to compute spatially-homogenized and energy-integrated + multi-group cross sections for deterministic neutronics calculations. + + This class helps automate the generation of MGXS objects for some energy + group structure and domain type. The Library serves as a collection for + MGXS objects with routines to automate the initialization of tallies for + input files, the loading of tally data from statepoint files, data storage, + energy group condensation and more. + + Parameters + ---------- + openmc_geometry : openmc.Geometry + An geometry which has been initialized with a root universe + by_nuclide : bool + If true, computes cross sections for each nuclide in each domain + mgxs_types : Iterable of str + The types of cross sections in the library (e.g., ['total', 'scatter']) + name : str, optional + Name of the multi-group cross section. library Used as a label to + identify tallies in OpenMC 'tallies.xml' file. + + Attributes + ---------- + openmc_geometry : openmc.Geometry + An geometry which has been initialized with a root universe + by_nuclide : bool + If true, computes cross sections for each nuclide in each domain + mgxs_types : Iterable of str + The types of cross sections in the library (e.g., ['total', 'scatter']) + domain_type : {'material', 'cell', 'distribcell', 'universe'} + Domain type for spatial homogenization + energy_groups : EnergyGroups + Energy group structure for energy condensation + all_mgxs : dict + MGXS objects keyed by domain ID and cross section type + statepoint : openmc.StatePoint + The statepoint with tally data used to the compute cross sections + name : str, optional + Name of the multi-group cross section library. Used as a label to + identify tallies in OpenMC 'tallies.xml' file. + + """ def __init__(self, openmc_geometry, by_nuclide=False, mgxs_types=None, name=''): @@ -23,6 +68,7 @@ class Library(object): self._domain_type = None self._energy_groups = None self._all_mgxs = {} + self._statepoint = None self.name = name self.openmc_geometry = openmc_geometry @@ -104,6 +150,10 @@ class Library(object): def all_mgxs(self): return self._all_mgxs + @property + def statepoint(self): + return self._statepoint + @openmc_geometry.setter def openmc_geometry(self, openmc_geometry): cv.check_type('openmc_geometry', openmc_geometry, openmc.Geometry) @@ -140,7 +190,13 @@ class Library(object): self._energy_groups = energy_groups def build_library(self): - """ + """Initialize MGXS objects in each domain and for each reaction type + in the library. + + This routine will populate the all_mgxs instance attribute dictionary + with MGXS subclass objects keyed by each domain ID (e.g., Material IDs) + and cross section type (e.g., 'nu-fission', 'total', etc.). + """ # Initialize MGXS for each domain and mgxs type and store in dictionary @@ -155,13 +211,20 @@ class Library(object): mgxs.create_tallies() self.all_mgxs[domain.id][mgxs_type] = mgxs - def add_to_tallies_file(self, tallies_file): - """ + def add_to_tallies_file(self, tallies_file, merge=True): + """Add all tallies from all MGXS objects to a tallies file. NOTE: This assumes that build_library() has been called - :param tallies_file: - :return: + Parameters + ---------- + tallies_file : openmc.TalliesFile + A TalliesFile object to add each MGXS' tallies to generate a + "tallies.xml" input file for OpenMC + merge : bool + Indicate whether tallies should be merged when possible. Defaults + to True. + """ cv.check_type('tallies_file', tallies_file, openmc.TalliesFile) @@ -171,17 +234,39 @@ class Library(object): for mgxs_type in self.mgxs_types: mgxs = self.get_mgxs(domain, mgxs_type) for tally_id, tally in mgxs.tallies.items(): - tallies_file.add_tally(tally, merge=True) + tallies_file.add_tally(tally, merge=merge) def load_from_statepoint(self, statepoint): - """ + """Extracts tallies in an OpenMC StatePoint with the data needed to + compute multi-group cross sections. + + This method is needed to compute cross section data from tallies + in an OpenMC StatePoint object. + + NOTE: The statepoint must first be linked with an OpenMC Summary object. + + Parameters + ---------- + statepoint : openmc.StatePoint + An OpenMC StatePoint object with tally data + + Raises + ------ + ValueError + When this method is called with a statepoint that has not been + linked with a summary object. - :param statepoint: - :return: """ cv.check_type('statepoint', statepoint, openmc.StatePoint) + if not statepoint.with_summary: + msg = 'Unable to load data from a statepoint which has not been ' \ + 'linked with a summary file' + raise ValueError(msg) + + self._statepoint = statepoint + # Load tallies for each MGXS for each domain and mgxs type for domain in self.domains: for mgxs_type in self.mgxs_types: @@ -190,11 +275,33 @@ class Library(object): mgxs.compute_xs() def get_mgxs(self, domain, mgxs_type): - """ + """Return the MGXS object for some domain and reaction rate type. + + This routine searches the library for an MGXS object for the spatial + domain and reaction rate type requ + + NOTE: This routine must be called after the build_library() routine. + + Parameters + ---------- + domain : Material or Cell or Universe or Integral + The material, cell, or universe object of interest (or its ID) + mgxs_type : {'total', 'transport', 'absorption', 'capture', 'fission', + 'nu-fission', 'scatter', 'nu-scatter', 'scatter matrix', + 'nu-scatter matrix', 'chi'} + The type of multi-group cross section object to return + + Returns + ------- + openmc.mgxs.MGXS + The MGXS object for the requested domain and reaction rate type + + Raises + ------ + ValueError + If no MGXS object can be found for the requested domain or + multi-group cross section type - :param domain: - :param mgxs_type: - :return: """ if self.domain_type == 'material': @@ -225,15 +332,38 @@ class Library(object): return self.all_mgxs[domain_id][mgxs_type] def get_condensed_library(self, coarse_groups): + """Construct an energy-condensed version of this library. + + This routine condense each of the multi-group cross sections in the + library to a coarse energy group structure. NOTE: This routine must + be called after the load_from_statepoint(...) routine loads the tallies + from the statepoint into each of the cross sections. + + Parameters + ---------- + coarse_groups : openmc.mgxs.EnergyGroups + The coarse energy group structure of interest + + Returns + ------- + Library + A new multi-group cross section library condensed to the group + structure of interest + + Raises + ------ + ValueError + When this method is called before a statepoint has been loaded + + See also + -------- + MGXS.get_condensed_xs(coarse_groups) + """ - :param coarse_groups: - :return: - """ - - if self.energy_groups is None: + if self.statepoint is None: msg = 'Unable to get a condensed coarse group cross section ' \ - 'library since the fine energy groups have not yet been set' + 'library since the statepoint has not yet been loaded' raise ValueError(msg) cv.check_type('coarse_groups', coarse_groups, openmc.mgxs.EnergyGroups) @@ -260,26 +390,42 @@ class Library(object): def build_hdf5_store(self, filename='mgxs', directory='mgxs', xs_type='macro'): """Export the multi-group cross section library to an HDF5 binary file. - This method constructs an HDF5 file which stores the multi-group - cross section data. The data is stored in a hierarchy of HDF5 groups - from the domain type, domain id, subdomain id (for distribcell domains), - nuclides and cross section types. Two datasets for the mean and standard - deviation are stored for each subdomain entry in the HDF5 file. + This method constructs an HDF5 file which stores the library's + multi-group cross section data. The data is stored in a hierarchy of + HDF5 groups from the domain type, domain id, subdomain id (for + distribcell domains), nuclides and cross section types. Two datasets for + the mean and standard deviation are stored for each subdomain entry in + the HDF5 file. NOTE: This requires the h5py Python package. Parameters ---------- filename : str - Filename for the HDF5 file (default is 'mgxs') + Filename for the HDF5 file. Defaults to 'mgxs'. directory : str - Directory for the HDF5 file (default is 'mgxs') + Directory for the HDF5 file. Defaults to 'mgxs'. xs_type: {'macro', 'micro'} - Store the macro or micro cross section in units of cm^-1 or barns + Store the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. + + Raises + ------ + ValueError + When this method is called before a statepoint has been loaded + + See also + -------- + MGXS.build_hdf5_store(filename, directory, xs_type) """ - # Load tallies for each MGXS for each domain and mgxs type + if self.statepoint is None: + msg = 'Unable to get a condensed coarse group cross section ' \ + 'library since a statepoint has not yet been loaded' + raise ValueError(msg) + + # Export MGXS for each domain and mgxs type to an HDF5 file for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = self.all_mgxs[domain.id][mgxs_type] diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 940586f32..20a9f3d6b 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -242,10 +242,11 @@ class MGXS(object): energy_groups : EnergyGroups The energy group structure for energy condensation by_nuclide : bool - If true, computes cross sections for each nuclide in domain + If true, computes cross sections for each nuclide in domain. + Defaults to False name : str, optional Name of the multi-group cross section. Used as a label to identify - tallies in OpenMC 'tallies.xml' file. + tallies in OpenMC 'tallies.xml' file. Defaults to the empty string. Returns ------- @@ -351,7 +352,8 @@ class MGXS(object): A list of nuclide name strings (e.g., ['U-235', 'U-238']). 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. + density summed across all nuclides in the spatial domain. Defaults + to 'all'. Returns ------- @@ -544,22 +546,24 @@ class MGXS(object): Parameters ---------- groups : Iterable of Integral or 'all' - Energy groups of interest + Energy groups of interest. Defaults to 'all'. subdomains : Iterable of Integral or 'all' - Subdomain IDs of interest + 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' (default) 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. + 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'} - Return the macro or micro cross section in units of cm^-1 or barns + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. order_groups: {'increasing', 'decreasing'} - Return the cross section indexed according to increasing (default) - or decreasing energy groups (decreasing or increasing energies) + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. value : str - A string for the type of value to return - 'mean' (default), - 'std_dev' or 'rel_err' are accepted + A string for the type of value to return - 'mean', 'std_dev' or + 'rel_err' are accepted. Defaults to 'mean'. Returns ------- @@ -739,7 +743,7 @@ class MGXS(object): Parameters ---------- subdomains : Iterable of Integral or 'all' - The subdomain IDs to average across + The subdomain IDs to average across. Defaults to 'all'. Returns ------- @@ -815,15 +819,17 @@ class MGXS(object): Parameters ---------- subdomains : Iterable of Integral or 'all' - The subdomain IDs of the cross sections to include in the report + 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' (default) 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. + 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 + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. """ @@ -912,14 +918,15 @@ class MGXS(object): Parameters ---------- filename : str - Filename for the HDF5 file (default is 'mgxs') + Filename for the HDF5 file. Defaults to 'mgxs'. directory : str - Directory for the HDF5 file (default is 'mgxs') + Directory for the HDF5 file. Defaults to 'mgxs'. xs_type: {'macro', 'micro'} - Store the macro or micro cross section in units of cm^-1 or barns + Store the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. append : boolean If true, appends to an existing HDF5 file with the same filename - directory (if one exists) + directory (if one exists). Defaults to True. Raises ------ @@ -1030,15 +1037,16 @@ class MGXS(object): Parameters ---------- filename : str - Filename for the exported file (default is 'mgxs') + Filename for the exported file. Defaults to 'mgxs'. directory : str - Directory for the exported file (default is 'mgxs') + Directory for the exported file. Defaults to 'mgxs'. format : {'csv', 'excel', 'pickle', 'latex'} - The format for the exported data file + The format for the exported data file. Defaults to 'csv'. groups : Iterable of Integral or 'all' - Energy groups of interest + Energy groups of interest. Defaults to 'all'. xs_type: {'macro', 'micro'} - Store the macro or micro cross section in units of cm^-1 or barns + Store the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. """ @@ -1100,15 +1108,17 @@ class MGXS(object): Parameters ---------- groups : Iterable of Integral or 'all' - Energy groups of interest + 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']). - The special string 'all' (default) 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. + 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 'all'. xs_type: {'macro', 'micro'} - Return macro or micro cross section in units of cm^-1 or barns + Return macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric @@ -1628,24 +1638,26 @@ class ScatterMatrixXS(MGXS): Parameters ---------- in_groups : Iterable of Integral or 'all' - Incoming energy groups of interest + Incoming energy groups of interest. Defaults to 'all'. out_groups : Iterable of Integral or 'all' - Outgoing energy groups of interest + Outgoing energy groups of interest. Defaults to 'all'. subdomains : Iterable of Integral or 'all' - Subdomain IDs of interest + 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' (default) 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. + 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'} - Return the macro or micro cross section in units of cm^-1 or barns + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. order_groups: {'increasing', 'decreasing'} - Return the cross section indexed according to increasing (default) - or decreasing energy groups (decreasing or increasing energies) + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. value : str - A string for the type of value to return - 'mean' (default), - 'std_dev' or 'rel_err' are accepted + A string for the type of value to return - 'mean', 'std_dev', or + 'rel_err' are accepted. Defaults to the empty string. Returns ------- @@ -1756,15 +1768,17 @@ class ScatterMatrixXS(MGXS): Parameters ---------- subdomains : Iterable of Integral or 'all' - The subdomain IDs of the cross sections to include in the report + 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' (default) 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. + 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 + Return the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. """ @@ -1952,23 +1966,24 @@ class Chi(MGXS): Parameters ---------- groups : Iterable of Integral or 'all' - Energy groups of interest + Energy groups of interest. Defaults to 'all'. subdomains : Iterable of Integral or 'all' - Subdomain IDs of interest + 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' (default) 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. + 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 (default) - or decreasing energy groups (decreasing or increasing energies) + Return the cross section indexed according to increasing or + decreasing energy groups (decreasing or increasing energies). + Defaults to 'increasing'. value : str - A string for the type of value to return - 'mean' (default), - 'std_dev' or 'rel_err' are accepted + A string for the type of value to return - 'mean', 'std_dev', or + 'rel_err' are accepted. Defaults to 'mean'. Returns ------- @@ -2082,15 +2097,17 @@ class Chi(MGXS): Parameters ---------- groups : Iterable of Integral or 'all' - Energy groups of interest + 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']). - The special string 'all' (default) 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. + 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 + 'all'. xs_type: {'macro', 'micro'} - Return macro or micro cross section in units of cm^-1 or barns + Return macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. summary : None or Summary An optional Summary object to be used to construct columns for distribcell tally filters (default is None). The geometric From 8e536f80953a9f59d67b644f2dc55c20638d79b8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Fri, 9 Oct 2015 20:29:09 -0400 Subject: [PATCH 087/130] The MGXS Library.build_hdf5_store(...) can now export by nuclide and subdomain --- .../examples/multi-group-cross-sections.ipynb | 39 ++++++--------- openmc/mgxs/library.py | 16 +++++- openmc/mgxs/mgxs.py | 50 +++++++++++++++---- 3 files changed, 71 insertions(+), 34 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index cbd81f154..67f43b171 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -478,7 +478,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-09 16:04:33\n", + " Date/Time: 2015-10-09 20:27:11\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -563,20 +563,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.3000E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 1.5218E+01 seconds\n", - " Time in transport only = 1.5180E+01 seconds\n", - " Time in inactive batches = 1.8800E+00 seconds\n", - " Time in active batches = 1.3338E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Total time for initialization = 3.9000E-01 seconds\n", + " Reading cross sections = 8.8000E-02 seconds\n", + " Total time in simulation = 1.2262E+01 seconds\n", + " Time in transport only = 1.2254E+01 seconds\n", + " Time in inactive batches = 1.8120E+00 seconds\n", + " Time in active batches = 1.0450E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 1.5664E+01 seconds\n", - " Calculation Rate (inactive) = 13297.9 neutrons/second\n", - " Calculation Rate (active) = 7497.38 neutrons/second\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.2662E+01 seconds\n", + " Calculation Rate (inactive) = 13796.9 neutrons/second\n", + " Calculation Rate (active) = 9569.38 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1883,7 +1883,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2312,15 +2312,6 @@ "* Spatial discretization of OpenMOC's mesh\n", "* Constant-in-angle multi-group cross sections" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index a7276bc9e..48288ad24 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -387,7 +387,8 @@ class Library(object): return condensed_library - def build_hdf5_store(self, filename='mgxs', directory='mgxs', xs_type='macro'): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', + subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section library to an HDF5 binary file. This method constructs an HDF5 file which stores the library's @@ -405,6 +406,15 @@ class Library(object): Filename for the HDF5 file. Defaults to 'mgxs'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. + subdomains : {'all', 'avg'} + Report all subdomains or the average of all subdomain cross sections + 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']). + 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'} Store the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. @@ -429,4 +439,8 @@ class Library(object): for domain in self.domains: for mgxs_type in self.mgxs_types: mgxs = self.all_mgxs[domain.id][mgxs_type] + + if subdomains == 'avg': + mgxs = mgxs.get_subdomain_avg_xs() + mgxs.build_hdf5_store(filename, directory, xs_type) \ No newline at end of file diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 20a9f3d6b..e1df3eef3 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -903,8 +903,8 @@ class MGXS(object): print(string) - def build_hdf5_store(self, filename='mgxs', directory='mgxs', - xs_type='macro', append=True): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True, + subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section data to an HDF5 binary file. This method constructs an HDF5 file which stores the multi-group @@ -921,12 +921,21 @@ class MGXS(object): Filename for the HDF5 file. Defaults to 'mgxs'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. - xs_type: {'macro', 'micro'} - Store the macro or micro cross section in units of cm^-1 or barns. - Defaults to 'macro'. append : boolean If true, appends to an existing HDF5 file with the same filename directory (if one exists). Defaults to True. + 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'} + Store the macro or micro cross section in units of cm^-1 or barns. + Defaults to 'macro'. Raises ------ @@ -962,8 +971,29 @@ class MGXS(object): else: xs_results = h5py.File(filename, 'w') + # Construct a collection of the subdomains to report + if subdomains != 'all': + cv.check_iterable_type('subdomains', subdomains, Integral) + elif self.domain_type == 'distribcell': + subdomains = np.arange(self.num_subdomains, dtype=np.int) + 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() + densities = np.zeros(len(nuclides), dtype=np.float) + elif nuclides == 'sum': + nuclides = ['sum'] + else: + cv.check_iterable_type('nuclides', nuclides, basestring) + else: + nuclides = ['sum'] + cv.check_value('xs_type', xs_type, ['macro', 'micro']) + ''' if self.by_nuclide: nuclides = self.domain.get_all_nuclides() densities = np.zeros(len(nuclides), dtype=np.float) @@ -971,16 +1001,18 @@ class MGXS(object): densities[i] = nuclides[nuclide][1] else: nuclides = ['sum'] + ''' # Create an HDF5 group within the file for the domain domain_type_group = xs_results.require_group(self.domain_type) - group_name = '{0} {1}'.format(self.domain_type, self.domain.id) - domain_group = domain_type_group.require_group(group_name) + domain_group = domain_type_group.require_group(str(self.domain.id)) - if self.domain_type == 'distribcell': + ''' + if subdomains == 'all' and self.domain_type == 'distribcell': subdomains = np.arange(self.num_subdomains, dtype=np.int) else: subdomains = [self.domain.id] + ''' # Determine number of digits to pad subdomain group keys num_digits = len(str(self.num_subdomains)) @@ -990,7 +1022,7 @@ class MGXS(object): # Create an HDF5 group for the subdomain if self.domain_type == 'distribcell': - group_name = str(subdomain).zfill(num_digits) + group_name = ''.zfill(num_digits) subdomain_group = domain_group.require_group(group_name) else: subdomain_group = domain_group From 769ff64107f05c81b7bcdb136401356399ca18e7 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 10 Oct 2015 18:08:47 -0400 Subject: [PATCH 088/130] Fixed bug in statepoint instance attribute for openmc.mgxs.Library --- .../examples/multi-group-cross-sections.ipynb | 34 +++++++------- openmc/mgxs/library.py | 20 ++++++++- openmc/mgxs/mgxs.py | 45 +++++++------------ 3 files changed, 51 insertions(+), 48 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 67f43b171..fedf7ea95 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -478,7 +478,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-09 20:27:11\n", + " Date/Time: 2015-10-10 17:36:39\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -563,20 +563,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9000E-01 seconds\n", - " Reading cross sections = 8.8000E-02 seconds\n", - " Total time in simulation = 1.2262E+01 seconds\n", - " Time in transport only = 1.2254E+01 seconds\n", - " Time in inactive batches = 1.8120E+00 seconds\n", - " Time in active batches = 1.0450E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 6.3500E-01 seconds\n", + " Reading cross sections = 1.4900E-01 seconds\n", + " Total time in simulation = 1.5217E+01 seconds\n", + " Time in transport only = 1.5201E+01 seconds\n", + " Time in inactive batches = 2.2480E+00 seconds\n", + " Time in active batches = 1.2969E+01 seconds\n", + " Time synchronizing fission bank = 2.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 1.2662E+01 seconds\n", - " Calculation Rate (inactive) = 13796.9 neutrons/second\n", - " Calculation Rate (active) = 9569.38 neutrons/second\n", + " Total time elapsed = 1.5866E+01 seconds\n", + " Calculation Rate (inactive) = 11121.0 neutrons/second\n", + " Calculation Rate (active) = 7710.69 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1883,7 +1883,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2192,8 +2192,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.227616\n", - "openmoc keff = 1.225325\n", - "bias [pcm]: -229.1\n" + "openmoc keff = -1501548191911247872.000000\n", + "bias [pcm]: -150154819191124787200000.0\n" ] } ], @@ -2286,8 +2286,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.227616\n", - "openmoc keff = 1.227096\n", - "bias [pcm]: -52.0\n" + "openmoc keff = -1678021319997784064.000000\n", + "bias [pcm]: -167802131999778406400000.0\n" ] } ], diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 48288ad24..c87483a42 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -1,4 +1,5 @@ import sys +import os import copy from numbers import Integral @@ -90,6 +91,7 @@ class Library(object): clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._all_mgxs = self.all_mgxs + clone._statepoint = self._statepoint clone._all_mgxs = {} for domain in self.domains: @@ -396,7 +398,7 @@ class Library(object): HDF5 groups from the domain type, domain id, subdomain id (for distribcell domains), nuclides and cross section types. Two datasets for the mean and standard deviation are stored for each subdomain entry in - the HDF5 file. + the HDF5 file. The number of groups is stored as a file attribute. NOTE: This requires the h5py Python package. @@ -435,6 +437,19 @@ class Library(object): 'library since a statepoint has not yet been loaded' raise ValueError(msg) + import h5py + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + # Add an attribute for the number of energy groups to the HDF5 file + full_filename = os.path.join(directory, filename + '.h5') + full_filename = full_filename.replace(' ', '-') + f = h5py.File(full_filename, 'w') + f.attrs["# groups"] = self.num_groups + f.close() + # Export MGXS for each domain and mgxs type to an HDF5 file for domain in self.domains: for mgxs_type in self.mgxs_types: @@ -443,4 +458,5 @@ class Library(object): if subdomains == 'avg': mgxs = mgxs.get_subdomain_avg_xs() - mgxs.build_hdf5_store(filename, directory, xs_type) \ No newline at end of file + mgxs.build_hdf5_store(filename, directory, + xs_type=xs_type, nuclides=nuclides) \ No newline at end of file diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index e1df3eef3..f424916a0 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -903,8 +903,9 @@ class MGXS(object): print(string) - def build_hdf5_store(self, filename='mgxs', directory='mgxs', append=True, - subdomains='all', nuclides='all', xs_type='macro'): + def build_hdf5_store(self, filename='mgxs', directory='mgxs', + subdomains='all', nuclides='all', + xs_type='macro', append=True): """Export the multi-group cross section data to an HDF5 binary file. This method constructs an HDF5 file which stores the multi-group @@ -921,9 +922,6 @@ class MGXS(object): Filename for the HDF5 file. Defaults to 'mgxs'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. - append : boolean - If true, appends to an existing HDF5 file with the same filename - directory (if one exists). Defaults to True. subdomains : Iterable of Integral or 'all' The subdomain IDs of the cross sections to include in the report. Defaults to 'all'. @@ -936,6 +934,9 @@ class MGXS(object): xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. + append : boolean + If true, appends to an existing HDF5 file with the same filename + directory (if one exists). Defaults to True. Raises ------ @@ -952,12 +953,7 @@ class MGXS(object): 'cross section has not been computed' raise ValueError(msg) - # Attempt to import h5py - try: - import h5py - except ImportError: - msg = 'The h5py Python package must be installed on your system' - raise ImportError(msg) + import h5py # Make directory if it does not exist if not os.path.exists(directory): @@ -993,27 +989,10 @@ class MGXS(object): cv.check_value('xs_type', xs_type, ['macro', 'micro']) - ''' - if self.by_nuclide: - nuclides = self.domain.get_all_nuclides() - densities = np.zeros(len(nuclides), dtype=np.float) - for i, nuclide in enumerate(nuclides): - densities[i] = nuclides[nuclide][1] - else: - nuclides = ['sum'] - ''' - # Create an HDF5 group within the file for the domain domain_type_group = xs_results.require_group(self.domain_type) domain_group = domain_type_group.require_group(str(self.domain.id)) - ''' - if subdomains == 'all' and self.domain_type == 'distribcell': - subdomains = np.arange(self.num_subdomains, dtype=np.int) - else: - subdomains = [self.domain.id] - ''' - # Determine number of digits to pad subdomain group keys num_digits = len(str(self.num_subdomains)) @@ -1976,7 +1955,7 @@ class Chi(MGXS): nu_fission_in = self.tallies['nu-fission-in'] nu_fission_out = self.tallies['nu-fission-out'] - # Remove the coarse energy filter to keep it out of tally arithmetic + # Remove coarse energy filter to keep it out of tally arithmetic energy_filter = nu_fission_in.find_filter('energy') nu_fission_in.remove_filter(energy_filter) @@ -2071,9 +2050,17 @@ class Chi(MGXS): nu_fission_in = nu_fission_in.summation(nuclides=nuclides) nu_fission_out = nu_fission_out.summation(nuclides=nuclides) + # Remove coarse energy filter to keep it out of tally arithmetic + energy_filter = nu_fission_in.find_filter('energy') + nu_fission_in.remove_filter(energy_filter) + # Compute chi and store it as the xs_tally attribute so we can # use the generic get_xs(...) method xs_tally = nu_fission_out / nu_fission_in + + # Add the coarse energy filter back to the nu-fission tally + nu_fission_in.add_filter(energy_filter) + xs = xs_tally.get_values(filters=filters, filter_bins=filter_bins, value=value) From 4f28c69d70be2eb16340721b7c83046e3c3f66c2 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sat, 10 Oct 2015 20:07:25 -0400 Subject: [PATCH 089/130] Fixed bug in MGXS.get_subdomain_avg(...) with material domain tyeps --- openmc/mgxs/mgxs.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index f424916a0..7e7b88f8c 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -773,7 +773,10 @@ class MGXS(object): # Clone this MGXS to initialize the subdomain-averaged version avg_xs = copy.deepcopy(self) - avg_xs.domain_type = 'cell' + + # If domain is distribcell, make the new domain 'cell' + if self.domain_type == 'distribcell': + avg_xs.domain_type = 'cell' # Average each of the tallies across subdomains for tally_type, tally in avg_xs.tallies.items(): From bfdcc1eabd836de37f2e750c517ab13ca4517448 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 11 Oct 2015 02:07:29 -0400 Subject: [PATCH 090/130] Now using all OrderedDicts in Python API for input reproducibility. Added tests for MGXS Library with/without nuclides --- openmc/geometry.py | 9 ++- openmc/material.py | 2 +- openmc/mgxs/library.py | 9 ++- openmc/mgxs/mgxs.py | 6 +- openmc/universe.py | 22 +++--- .../inputs_true.dat | 1 + .../results_true.dat | 1 + .../test_mgxs_library_no_nuclides.py | 79 +++++++++++++++++++ .../inputs_true.dat | 1 + .../results_true.dat | 1 + .../test_mgxs_library_nuclides.py | 79 +++++++++++++++++++ tests/testing_harness.py | 1 + 12 files changed, 188 insertions(+), 23 deletions(-) create mode 100644 tests/test_mgxs_library_no_nuclides/inputs_true.dat create mode 100644 tests/test_mgxs_library_no_nuclides/results_true.dat create mode 100644 tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py create mode 100644 tests/test_mgxs_library_nuclides/inputs_true.dat create mode 100644 tests/test_mgxs_library_nuclides/results_true.dat create mode 100644 tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py diff --git a/openmc/geometry.py b/openmc/geometry.py index 18fa698b5..5d0d8f53f 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -1,3 +1,4 @@ +from collections import OrderedDict from xml.etree import ElementTree as ET import openmc @@ -110,7 +111,7 @@ class Geometry(object): """ - nuclides = {} + nuclides = OrderedDict() materials = self.get_all_materials() for material in materials: @@ -134,7 +135,7 @@ class Geometry(object): for cell in material_cells: materials.add(cell._fill) - return list(materials) + return sorted(list(materials)) def get_all_material_cells(self): all_cells = self.get_all_cells() @@ -144,7 +145,7 @@ class Geometry(object): if cell._type == 'normal': material_cells.add(cell) - return list(material_cells) + return sorted(list(material_cells)) def get_all_material_universes(self): """Return all universes composed of at least one non-fill cell @@ -165,7 +166,7 @@ class Geometry(object): if cell._type == 'normal': material_universes.add(universe) - return list(material_universes) + return sorted(list(material_universes)) class GeometryFile(object): diff --git a/openmc/material.py b/openmc/material.py index 92c77858d..b4a553e66 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -358,7 +358,7 @@ class Material(object): """ - nuclides = {} + nuclides = OrderedDict() for nuclide_name, nuclide_tuple in self._nuclides.items(): nuclide = nuclide_tuple[0] diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index c87483a42..ba6268802 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -2,6 +2,7 @@ import sys import os import copy from numbers import Integral +from collections import OrderedDict import openmc import openmc.mgxs @@ -68,7 +69,7 @@ class Library(object): self._mgxs_types = [] self._domain_type = None self._energy_groups = None - self._all_mgxs = {} + self._all_mgxs = OrderedDict() self._statepoint = None self.name = name @@ -93,9 +94,9 @@ class Library(object): clone._all_mgxs = self.all_mgxs clone._statepoint = self._statepoint - clone._all_mgxs = {} + clone._all_mgxs = OrderedDict() for domain in self.domains: - clone.all_mgxs[domain.id] = {} + clone.all_mgxs[domain.id] = OrderedDict() for mgxs_type in self.mgxs_types: mgxs = copy.deepcopy(self.all_mgxs[domain.id][mgxs_type]) clone.all_mgxs[domain.id][mgxs_type] = mgxs @@ -203,7 +204,7 @@ class Library(object): # Initialize MGXS for each domain and mgxs type and store in dictionary for domain in self.domains: - self.all_mgxs[domain.id] = {} + self.all_mgxs[domain.id] = OrderedDict() for mgxs_type in self.mgxs_types: mgxs = openmc.mgxs.MGXS.get_mgxs(mgxs_type, name=self.name) mgxs.domain = domain diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7e7b88f8c..222f55e97 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1,4 +1,4 @@ -from collections import Iterable +from collections import Iterable, OrderedDict from numbers import Integral import os import sys @@ -100,7 +100,7 @@ class MGXS(object): self._domain = None self._domain_type = None self._energy_groups = None - self._tallies = {} + self._tallies = OrderedDict() self._xs_tally = None self.name = name @@ -127,7 +127,7 @@ class MGXS(object): clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._xs_tally = copy.deepcopy(self.xs_tally, memo) - clone._tallies = {} + clone._tallies = OrderedDict() for tally_type, tally in self.tallies.items(): clone.tallies[tally_type] = copy.deepcopy(tally, memo) diff --git a/openmc/universe.py b/openmc/universe.py index a4ea38de9..bc1e98652 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -275,7 +275,7 @@ class Cell(object): """ - nuclides = {} + nuclides = OrderedDict() if self._type != 'void': nuclides.update(self._fill.get_all_nuclides()) @@ -293,7 +293,7 @@ class Cell(object): """ - cells = {} + cells = OrderedDict() if self._type == 'fill' or self._type == 'lattice': cells.update(self._fill.get_all_cells()) @@ -312,7 +312,7 @@ class Cell(object): """ - universes = {} + universes = OrderedDict() if self._type == 'fill': universes[self._fill._id] = self._fill @@ -415,7 +415,7 @@ class Universe(object): # Keys - Cell IDs # Values - Cells - self._cells = {} + self._cells = OrderedDict() # Keys - Cell IDs # Values - Offsets @@ -541,7 +541,7 @@ class Universe(object): """ - nuclides = {} + nuclides = OrderedDict() # Append all Nuclides in each Cell in the Universe to the dictionary for cell_id, cell in self._cells.items(): @@ -559,7 +559,7 @@ class Universe(object): """ - cells = {} + cells = OrderedDict() # Add this Universe's cells to the dictionary cells.update(self._cells) @@ -584,7 +584,7 @@ class Universe(object): # Get all Cells in this Universe cells = self.get_all_cells() - universes = {} + universes = OrderedDict() # Append all Universes containing each Cell to the dictionary for cell_id, cell in cells.items(): @@ -717,7 +717,7 @@ class Lattice(object): """ - univs = dict() + univs = OrderedDict() for k in range(len(self._universes)): for j in range(len(self._universes[k])): if isinstance(self._universes[k][j], Universe): @@ -745,7 +745,7 @@ class Lattice(object): """ - nuclides = {} + nuclides = OrderedDict() # Get all unique Universes contained in each of the lattice cells unique_universes = self.get_unique_universes() @@ -766,7 +766,7 @@ class Lattice(object): """ - cells = {} + cells = OrderedDict() unique_universes = self.get_unique_universes() for universe_id, universe in unique_universes.items(): @@ -787,7 +787,7 @@ class Lattice(object): # Initialize a dictionary of all Universes contained by the Lattice # in each nested Universe level - all_universes = {} + all_universes = OrderedDict() # Get all unique Universes contained in each of the lattice cells unique_universes = self.get_unique_universes() diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat new file mode 100644 index 000000000..fe91376d5 --- /dev/null +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -0,0 +1 @@ +ff4b31da88312d526bebb8819aaaa75f737b9aaff4660557009c8277c1e8c5f2515d256de9ffc9bdc07bce42719fae27aeb8d0a3d3b61552dd4b1eddd48e6ff2 \ 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 new file mode 100644 index 000000000..54b73efb3 --- /dev/null +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -0,0 +1 @@ +f882fc13affc45ed4ce833c17b719c10a371b3c086022a846014e0ce46337971850d55c7634a9bfc740709c696aef8ec9cdad19253f62aeb77af6baed35f9fda \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py new file mode 100644 index 000000000..5fe44f952 --- /dev/null +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + + # The openmc.mgxs module needs a summary.h5 file + self._input_set.settings.output = {'summary': True} + + # Generate inputs using parent class routine + super(MGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib.by_nuclide = False + self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', + 'nu-scatter matrix', 'chi'] + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.TalliesFile() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=True): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Read the summary file. + summary = glob.glob(os.path.join(os.getcwd(), 'summary.h5'))[0] + su = openmc.Summary(summary) + sp.link_with_summary(su) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a string from Pandas Dataframe for each MGXS + outstr = '' + for domain in sorted(self.mgxs_lib.domains): + for mgxs_type in self.mgxs_lib.mgxs_types: + mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat new file mode 100644 index 000000000..b40fb91b3 --- /dev/null +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -0,0 +1 @@ +06e2f794c78d312491a87074b2e725d6f395fc250e004c125b50c1057b725ef1dbf3fd943629fd01b5a26ed018a1292712fc3425c925661ddadbf83194eb66df \ 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 new file mode 100644 index 000000000..278e7da84 --- /dev/null +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -0,0 +1 @@ +2c3d1524788449afd2124a9cfa9e6032077598639bddfa4d5e5c48962e789ca133e537b7207e200a79a6d01dc703b6f43f4ba4916323aab90c9ccaf335c640f1 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py new file mode 100644 index 000000000..637afc0b6 --- /dev/null +++ b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + + # The openmc.mgxs module needs a summary.h5 file + self._input_set.settings.output = {'summary': True} + + # Generate inputs using parent class routine + super(MGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib.by_nuclide = True + self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', + 'nu-scatter matrix', 'chi'] + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.TalliesFile() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=True): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Read the summary file. + summary = glob.glob(os.path.join(os.getcwd(), 'summary.h5'))[0] + su = openmc.Summary(summary) + sp.link_with_summary(su) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a string from Pandas Dataframe for each MGXS + outstr = '' + for domain in sorted(self.mgxs_lib.domains): + for mgxs_type in self.mgxs_lib.mgxs_types: + mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 828fc3a09..9435ccbbc 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -349,6 +349,7 @@ class PyAPITestHarness(TestHarness): output.append(os.path.join(os.getcwd(), 'geometry.xml')) output.append(os.path.join(os.getcwd(), 'settings.xml')) output.append(os.path.join(os.getcwd(), 'inputs_test.dat')) + output.append(os.path.join(os.getcwd(), 'summary.h5')) for f in output: if os.path.exists(f): os.remove(f) From 60fdbd6b1b68b52d6b3e27219f9a3555978b60d8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 11 Oct 2015 02:12:57 -0400 Subject: [PATCH 091/130] Added Pandas to .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7af617f85..efdc457a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ before_install: - conda config --set always_yes yes --set changeps1 no - conda update -q conda - conda info -a - - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy h5py + - conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION numpy scipy h5py pandas - source activate test-environment # Install GCC, MPICH, HDF5, PHDF5 From 178fb2bff5b4f1c5ea85ea85c35e5498c1138b17 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 11 Oct 2015 02:46:27 -0400 Subject: [PATCH 092/130] Added tests for MGXS Library HDF5 export and energy group condensation --- .../inputs_true.dat | 1 + .../results_true.dat | 1 + .../test_mgxs_library_condense.py | 83 +++++++++++++++++ tests/test_mgxs_library_hdf5/inputs_true.dat | 1 + tests/test_mgxs_library_hdf5/results_true.dat | 1 + .../test_mgxs_library_hdf5.py | 92 +++++++++++++++++++ 6 files changed, 179 insertions(+) create mode 100644 tests/test_mgxs_library_condense/inputs_true.dat create mode 100644 tests/test_mgxs_library_condense/results_true.dat create mode 100644 tests/test_mgxs_library_condense/test_mgxs_library_condense.py create mode 100644 tests/test_mgxs_library_hdf5/inputs_true.dat create mode 100644 tests/test_mgxs_library_hdf5/results_true.dat create mode 100644 tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat new file mode 100644 index 000000000..b40fb91b3 --- /dev/null +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -0,0 +1 @@ +06e2f794c78d312491a87074b2e725d6f395fc250e004c125b50c1057b725ef1dbf3fd943629fd01b5a26ed018a1292712fc3425c925661ddadbf83194eb66df \ 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 new file mode 100644 index 000000000..9cfa49a26 --- /dev/null +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -0,0 +1 @@ +a14024dfa41c9b9e90db79574f4d3f9eeeffb1c8c6fd7d26a234bf3fe1c3268316ee9f1de01211583246d0968b148870086469548a7c8ca424b8ff4111db0c8d \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py new file mode 100644 index 000000000..8482c4ae3 --- /dev/null +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + + # The openmc.mgxs module needs a summary.h5 file + self._input_set.settings.output = {'summary': True} + + # Generate inputs using parent class routine + super(MGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib.by_nuclide = True + self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', + 'nu-scatter matrix', 'chi'] + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.TalliesFile() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=True): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Read the summary file. + summary = glob.glob(os.path.join(os.getcwd(), 'summary.h5'))[0] + su = openmc.Summary(summary) + sp.link_with_summary(su) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Build a condensed 1-group MGXS Library + one_group = openmc.mgxs.EnergyGroups([0., 20.]) + condense_lib = self.mgxs_lib.get_condensed_library(one_group) + + # Build a string from Pandas Dataframe for each 1-group MGXS + outstr = '' + for domain in sorted(condense_lib.domains): + for mgxs_type in condense_lib.mgxs_types: + mgxs = condense_lib.get_mgxs(domain, mgxs_type) + df = mgxs.get_pandas_dataframe() + outstr += df.to_string() + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MGXSTestHarness('statepoint.10.*', True) + harness.main() diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat new file mode 100644 index 000000000..fe91376d5 --- /dev/null +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -0,0 +1 @@ +ff4b31da88312d526bebb8819aaaa75f737b9aaff4660557009c8277c1e8c5f2515d256de9ffc9bdc07bce42719fae27aeb8d0a3d3b61552dd4b1eddd48e6ff2 \ 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 new file mode 100644 index 000000000..62913b363 --- /dev/null +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -0,0 +1 @@ +290551338cc3a6c5fcf965d5f0ee0d14bb68a9fa3f4066bd59c65d2673bf659547be0674961631f5fd03bc06d991ff1dafb974938222a8e87c4d232f1212bd4a \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py new file mode 100644 index 000000000..26f4154a8 --- /dev/null +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python + +import os +import sys +import glob +import hashlib +import h5py +sys.path.insert(0, os.pardir) +from testing_harness import PyAPITestHarness +import openmc +import openmc.mgxs + + +class MGXSTestHarness(PyAPITestHarness): + def _build_inputs(self): + + # The openmc.mgxs module needs a summary.h5 file + self._input_set.settings.output = {'summary': True} + + # Generate inputs using parent class routine + super(MGXSTestHarness, self)._build_inputs() + + # Initialize a two-group structure + energy_groups = openmc.mgxs.EnergyGroups(group_edges=[0, 0.625e-6, 20.]) + + # Initialize MGXS Library for a few cross section types + self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) + self.mgxs_lib.by_nuclide = False + self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', + 'nu-scatter matrix', 'chi'] + self.mgxs_lib.energy_groups = energy_groups + self.mgxs_lib.domain_type = 'material' + self.mgxs_lib.build_library() + + # Initialize a tallies file + self._input_set.tallies = openmc.TalliesFile() + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self._input_set.tallies.export_to_xml() + + def _get_results(self, hash_output=True): + """Digest info in the statepoint and return as a string.""" + + # Read the statepoint file. + statepoint = glob.glob(os.path.join(os.getcwd(), self._sp_name))[0] + sp = openmc.StatePoint(statepoint) + + # Read the summary file. + summary = glob.glob(os.path.join(os.getcwd(), 'summary.h5'))[0] + su = openmc.Summary(summary) + sp.link_with_summary(su) + + # Load the MGXS library from the statepoint + self.mgxs_lib.load_from_statepoint(sp) + + # Export the MGXS Library to an HDF5 file + self.mgxs_lib.build_hdf5_store(filename='mgxs', directory='.') + + # Open the MGXS HDF5 file + f = h5py.File('mgxs.h5', 'r') + + # Build a string from the datasets in the HDF5 file + outstr = '' + for domain in sorted(self.mgxs_lib.domains): + for mgxs_type in self.mgxs_lib.mgxs_types: + key = 'material/{0}/{1}/average'.format(domain.id, mgxs_type) + outstr += str(f[key]) + key = 'material/{0}/{1}/std. dev.'.format(domain.id, mgxs_type) + outstr += str(f[key]) + + # Close the MGXS HDF5 file + f.close() + + # Hash the results if necessary + if hash_output: + sha512 = hashlib.sha512() + sha512.update(outstr.encode('utf-8')) + outstr = sha512.hexdigest() + + return outstr + + + def _cleanup(self): + super(MGXSTestHarness, self)._cleanup() + f = os.path.join(os.getcwd(), 'tallies.xml') + if os.path.exists(f): os.remove(f) + f = os.path.join(os.getcwd(), 'mgxs.h5') + if os.path.exists(f): os.remove(f) + + +if __name__ == '__main__': + harness = MGXSTestHarness('statepoint.10.*', True) + harness.main() From 582d988ff335b9005329e32e06c56ec17ff5d25f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 11 Oct 2015 10:06:12 -0400 Subject: [PATCH 093/130] Cleaned up msg string formatting in openmc.mgxs --- openmc/mgxs/mgxs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 222f55e97..3a72b4232 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -509,7 +509,7 @@ class MGXS(object): elif self.domain_type == 'material': self.domain = statepoint.summary.get_material_by_id(self.domain.id) else: - msg = 'Unable to load data from a statepoint for domain type {} ' \ + msg = 'Unable to load data from a statepoint for domain type {0} ' \ 'which is not yet supported'.format(self.domain_type) raise ValueError(msg) From 52559aca3db559b9011ff6ad6148de001f47d29a Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 11 Oct 2015 10:07:18 -0400 Subject: [PATCH 094/130] Fixed typo in docstring in openmc.mgxs.library per comment from @nelsonag --- openmc/mgxs/library.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index ba6268802..533ca507d 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -281,7 +281,7 @@ class Library(object): """Return the MGXS object for some domain and reaction rate type. This routine searches the library for an MGXS object for the spatial - domain and reaction rate type requ + domain and reaction rate type requested by the user. NOTE: This routine must be called after the build_library() routine. From c984ffd8c0d6d7e18d807f7fb758db6bf53810d6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 11 Oct 2015 11:18:52 -0400 Subject: [PATCH 095/130] Added resturctured text files for openmc.mgxs documentation --- docs/source/pythonapi/energy_groups.rst | 8 + .../examples/multi-group-cross-sections.ipynb | 198 +++++++++--------- docs/source/pythonapi/index.rst | 9 + docs/source/pythonapi/mgxs.rst | 8 + docs/source/pythonapi/mgxs_library.rst | 8 + docs/source/pythonapi/opencg_compatible.rst | 10 +- openmc/mgxs/mgxs.py | 4 +- 7 files changed, 140 insertions(+), 105 deletions(-) create mode 100644 docs/source/pythonapi/energy_groups.rst create mode 100644 docs/source/pythonapi/mgxs.rst create mode 100644 docs/source/pythonapi/mgxs_library.rst diff --git a/docs/source/pythonapi/energy_groups.rst b/docs/source/pythonapi/energy_groups.rst new file mode 100644 index 000000000..28ca6f3fe --- /dev/null +++ b/docs/source/pythonapi/energy_groups.rst @@ -0,0 +1,8 @@ +.. _pythonapi_energy_groups: + +============= +Energy Groups +============= + +.. automodule:: openmc.mgxs.groups + :members: diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index fedf7ea95..e66dd4764 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -373,27 +373,29 @@ { "data": { "text/plain": [ - "{'flux': Tally\n", - " \tID =\t10003\n", - " \tName =\t\n", - " \tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", - " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", - " 2.00000000e+01]\n", - " \tNuclides =\ttotal \n", - " \tScores =\t['flux']\n", - " \tEstimator =\ttracklength, 'nu-fission': Tally\n", - " \tID =\t10004\n", - " \tName =\t\n", - " \tFilters =\t\n", - " \t\tcell\t[1]\n", - " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", - " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", - " 2.00000000e+01]\n", - " \tNuclides =\ttotal \n", - " \tScores =\t['nu-fission']\n", - " \tEstimator =\ttracklength}" + "OrderedDict([('flux', Tally\n", + "\tID =\t10003\n", + "\tName =\t\n", + "\tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", + " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", + " 2.00000000e+01]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t['flux']\n", + "\tEstimator =\ttracklength\n", + "), ('nu-fission', Tally\n", + "\tID =\t10004\n", + "\tName =\t\n", + "\tFilters =\t\n", + " \t\tcell\t[1]\n", + " \t\tenergy\t[ 0.00000000e+00 5.80000000e-08 1.40000000e-07 2.80000000e-07\n", + " 6.25000000e-07 4.00000000e-06 5.53000000e-03 8.21000000e-01\n", + " 2.00000000e+01]\n", + "\tNuclides =\ttotal \n", + "\tScores =\t['nu-fission']\n", + "\tEstimator =\ttracklength\n", + ")])" ] }, "execution_count": 13, @@ -478,7 +480,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-10 17:36:39\n", + " Date/Time: 2015-10-11 11:02:44\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -563,20 +565,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 6.3500E-01 seconds\n", - " Reading cross sections = 1.4900E-01 seconds\n", - " Total time in simulation = 1.5217E+01 seconds\n", - " Time in transport only = 1.5201E+01 seconds\n", - " Time in inactive batches = 2.2480E+00 seconds\n", - " Time in active batches = 1.2969E+01 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", + " Total time for initialization = 3.9700E-01 seconds\n", + " Reading cross sections = 8.9000E-02 seconds\n", + " Total time in simulation = 1.2140E+01 seconds\n", + " Time in transport only = 1.2131E+01 seconds\n", + " Time in inactive batches = 1.8560E+00 seconds\n", + " Time in active batches = 1.0284E+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 = 0.0000E+00 seconds\n", " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.5866E+01 seconds\n", - " Calculation Rate (inactive) = 11121.0 neutrons/second\n", - " Calculation Rate (active) = 7710.69 neutrons/second\n", + " Total time elapsed = 1.2547E+01 seconds\n", + " Calculation Rate (inactive) = 13469.8 neutrons/second\n", + " Calculation Rate (active) = 9723.84 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1723,48 +1725,39 @@ " 10002\n", " 1\n", " 1\n", - " O-16\n", - " 1.560098\n", - " 0.017801\n", + " H-1\n", + " 0.234877\n", + " 0.010096\n", " \n", " \n", " 127\n", " 10002\n", " 1\n", " 1\n", - " H-1\n", - " 0.234877\n", - " 0.010096\n", + " O-16\n", + " 1.560098\n", + " 0.017801\n", " \n", " \n", " 124\n", " 10002\n", " 1\n", " 2\n", - " O-16\n", - " 0.288236\n", - " 0.004397\n", - " \n", - " \n", - " 125\n", - " 10002\n", - " 1\n", - " 2\n", " H-1\n", " 1.587815\n", " 0.007847\n", " \n", " \n", - " 122\n", + " 125\n", " 10002\n", " 1\n", - " 3\n", + " 2\n", " O-16\n", - " 0.000000\n", - " 0.000000\n", + " 0.288236\n", + " 0.004397\n", " \n", " \n", - " 123\n", + " 122\n", " 10002\n", " 1\n", " 3\n", @@ -1773,11 +1766,20 @@ " 0.000513\n", " \n", " \n", + " 123\n", + " 10002\n", + " 1\n", + " 3\n", + " O-16\n", + " 0.000000\n", + " 0.000000\n", + " \n", + " \n", " 120\n", " 10002\n", " 1\n", " 4\n", - " O-16\n", + " H-1\n", " 0.000000\n", " 0.000000\n", " \n", @@ -1786,7 +1788,7 @@ " 10002\n", " 1\n", " 4\n", - " H-1\n", + " O-16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -1795,7 +1797,7 @@ " 10002\n", " 1\n", " 5\n", - " O-16\n", + " H-1\n", " 0.000000\n", " 0.000000\n", " \n", @@ -1804,7 +1806,7 @@ " 10002\n", " 1\n", " 5\n", - " H-1\n", + " O-16\n", " 0.000000\n", " 0.000000\n", " \n", @@ -1814,16 +1816,16 @@ ], "text/plain": [ " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 O-16 1.560098 0.017801\n", - "127 10002 1 1 H-1 0.234877 0.010096\n", - "124 10002 1 2 O-16 0.288236 0.004397\n", - "125 10002 1 2 H-1 1.587815 0.007847\n", - "122 10002 1 3 O-16 0.000000 0.000000\n", - "123 10002 1 3 H-1 0.010122 0.000513\n", - "120 10002 1 4 O-16 0.000000 0.000000\n", - "121 10002 1 4 H-1 0.000000 0.000000\n", - "118 10002 1 5 O-16 0.000000 0.000000\n", - "119 10002 1 5 H-1 0.000000 0.000000" + "126 10002 1 1 H-1 0.234877 0.010096\n", + "127 10002 1 1 O-16 1.560098 0.017801\n", + "124 10002 1 2 H-1 1.587815 0.007847\n", + "125 10002 1 2 O-16 0.288236 0.004397\n", + "122 10002 1 3 H-1 0.010122 0.000513\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" ] }, "execution_count": 41, @@ -1883,7 +1885,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1949,6 +1951,11 @@ "\tReaction Type =\ttransport\n", "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", + "\tNuclide =\tU-235\n", + "\tCross Sections [cm^-1]:\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", + "\n", "\tNuclide =\tU-238\n", "\tCross Sections [cm^-1]:\n", " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", @@ -1959,11 +1966,6 @@ " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", "\n", - "\tNuclide =\tU-235\n", - "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", - "\n", "\n", "\n" ] @@ -2000,12 +2002,20 @@ " 3\n", " 10000\n", " 1\n", + " U-235\n", + " 21.095256\n", + " 0.257787\n", + " \n", + " \n", + " 4\n", + " 10000\n", + " 1\n", " U-238\n", " 9.589323\n", " 0.038756\n", " \n", " \n", - " 4\n", + " 5\n", " 10000\n", " 1\n", " O-16\n", @@ -2013,15 +2023,15 @@ " 0.012939\n", " \n", " \n", - " 5\n", + " 0\n", " 10000\n", - " 1\n", + " 2\n", " U-235\n", - " 21.095256\n", - " 0.257787\n", + " 485.513530\n", + " 2.418761\n", " \n", " \n", - " 0\n", + " 1\n", " 10000\n", " 2\n", " U-238\n", @@ -2029,33 +2039,25 @@ " 0.065428\n", " \n", " \n", - " 1\n", + " 2\n", " 10000\n", " 2\n", " O-16\n", " 3.800027\n", " 0.024538\n", " \n", - " \n", - " 2\n", - " 10000\n", - " 2\n", - " U-235\n", - " 485.513530\n", - " 2.418761\n", - " \n", " \n", "\n", "" ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-238 9.589323 0.038756\n", - "4 10000 1 O-16 3.159101 0.012939\n", - "5 10000 1 U-235 21.095256 0.257787\n", - "0 10000 2 U-238 11.178844 0.065428\n", - "1 10000 2 O-16 3.800027 0.024538\n", - "2 10000 2 U-235 485.513530 2.418761" + "3 10000 1 U-235 21.095256 0.257787\n", + "4 10000 1 U-238 9.589323 0.038756\n", + "5 10000 1 O-16 3.159101 0.012939\n", + "0 10000 2 U-235 485.513530 2.418761\n", + "1 10000 2 U-238 11.178844 0.065428\n", + "2 10000 2 O-16 3.800027 0.024538" ] }, "execution_count": 46, @@ -2192,8 +2194,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.227616\n", - "openmoc keff = -1501548191911247872.000000\n", - "bias [pcm]: -150154819191124787200000.0\n" + "openmoc keff = 1.225325\n", + "bias [pcm]: -229.1\n" ] } ], @@ -2286,8 +2288,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.227616\n", - "openmoc keff = -1678021319997784064.000000\n", - "bias [pcm]: -167802131999778406400000.0\n" + "openmoc keff = 1.227096\n", + "bias [pcm]: -52.0\n" ] } ], diff --git a/docs/source/pythonapi/index.rst b/docs/source/pythonapi/index.rst index 09fbb3ac9..465ea8923 100644 --- a/docs/source/pythonapi/index.rst +++ b/docs/source/pythonapi/index.rst @@ -57,6 +57,15 @@ on a given module or class. summary tallies +**Multi-Group Cross Section Generation** + +.. toctree:: + :maxdepth: 1 + + mgxs + energy_groups + mgxs_library + **Example Jupyter Notebooks:** .. toctree:: diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst new file mode 100644 index 000000000..04e2a99de --- /dev/null +++ b/docs/source/pythonapi/mgxs.rst @@ -0,0 +1,8 @@ +.. _pythonapi_mgxs: + +========================== +Multi-Group Cross Sections +========================== + +.. automodule:: openmc.mgxs.mgxs + :members: MGXS diff --git a/docs/source/pythonapi/mgxs_library.rst b/docs/source/pythonapi/mgxs_library.rst new file mode 100644 index 000000000..8ac545700 --- /dev/null +++ b/docs/source/pythonapi/mgxs_library.rst @@ -0,0 +1,8 @@ +.. _pythonapi_mgxs_library: + +============ +MGXS Library +============ + +.. automodule:: openmc.mgxs.library + :members: diff --git a/docs/source/pythonapi/opencg_compatible.rst b/docs/source/pythonapi/opencg_compatible.rst index c807e19cc..c8ba82e8c 100644 --- a/docs/source/pythonapi/opencg_compatible.rst +++ b/docs/source/pythonapi/opencg_compatible.rst @@ -1,8 +1,8 @@ -.. _pythonapi_opencg_compatible: +.. _pythonapi_openmc_mgxs: -==================== -OpenCG Compatibility -==================== +========================== +Multi-Group Cross Sections +========================== -.. automodule:: openmc.opencg_compatible +.. automodule:: openmc.mgxs.mgxs :members: diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 3a72b4232..79f86b080 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -252,7 +252,7 @@ class MGXS(object): ------- MGXS A subclass of the abstract MGXS class for the multi-group cross - section type requeted by the user + section type requested by the user """ @@ -322,7 +322,7 @@ class MGXS(object): The atomic number density (atom/b-cm) for the nuclide of interest Raises - ------ + ------- ValueError When the density is requested for a nuclide which is not found in the spatial domain. From 3e436eb2d2500c76279776e1c8d1588375b356e6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 12 Oct 2015 10:17:33 -0400 Subject: [PATCH 096/130] Added option to print the logfile for failing tests per @smharper recommendation --- tests/run_tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/run_tests.py b/tests/run_tests.py index 338732c14..e62629401 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -470,6 +470,7 @@ for key in iter(tests): logfilename = os.path.splitext(logfilename)[0] logfilename = logfilename + '_{0}.log'.format(test.name) shutil.copy(logfile[0], logfilename) + with open(logfilename) as fh: print(fh.read()) # Clear build directory and remove binary and hdf5 files shutil.rmtree('build', ignore_errors=True) From 9bc0e8e843592b12dafd5698289c99c8dac57eb8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 12 Oct 2015 11:11:15 -0400 Subject: [PATCH 097/130] Made the GeometryFile.create_xml_file() clear the WRITTEN_IDS global dict --- openmc/geometry.py | 5 ++++- openmc/universe.py | 2 ++ tests/run_tests.py | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/openmc/geometry.py b/openmc/geometry.py index 5d0d8f53f..bb98be2fe 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -199,7 +199,10 @@ class GeometryFile(object): """ - root_universe = self._geometry._root_universe + # Clear OpenMC written IDs used to optimize XML generation + openmc.universe.WRITTEN_IDS = {} + + root_universe = self.geometry.root_universe root_universe.create_xml_subelement(self._geometry_file) # Clean the indentation in the file to be user-readable diff --git a/openmc/universe.py b/openmc/universe.py index bc1e98652..f8ecb535c 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -603,6 +603,7 @@ class Universe(object): return string def create_xml_subelement(self, xml_element): + # Iterate over all Cells for cell_id, cell in self._cells.items(): @@ -938,6 +939,7 @@ class RectLattice(Lattice): return offset def create_xml_subelement(self, xml_element): + # Determine if XML element already contains subelement for this Lattice path = './lattice[@id=\'{0}\']'.format(self._id) test = xml_element.find(path) diff --git a/tests/run_tests.py b/tests/run_tests.py index e62629401..6974dff33 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -470,7 +470,8 @@ for key in iter(tests): logfilename = os.path.splitext(logfilename)[0] logfilename = logfilename + '_{0}.log'.format(test.name) shutil.copy(logfile[0], logfilename) - with open(logfilename) as fh: print(fh.read()) + + with open(logfilename) as fh: print(fh.read()) # Clear build directory and remove binary and hdf5 files shutil.rmtree('build', ignore_errors=True) From 46e012de9b50249daf444e267111c0274c65f2ab Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 12 Oct 2015 17:00:26 -0400 Subject: [PATCH 098/130] Added get_all_materials to Cell, Universe and Lattice classes --- openmc/universe.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/openmc/universe.py b/openmc/universe.py index f8ecb535c..61e48f79d 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -300,6 +300,27 @@ class Cell(object): return cells + def get_all_materials(self): + """Return all materials that are contained within the cell + + Returns + ------- + materials : dict + Dictionary whose keys are material IDs and values are Material instances + + """ + + materials = OrderedDict() + if self.fill_type == 'material': + materials[self.fill.id] = self.fill + + # Append all Cells in each Cell in the Universe to the dictionary + cells = self.get_all_cells() + for cell_id, cell in cells.items(): + materials.update(cell.get_all_materials()) + + return materials + def get_all_universes(self): """Return all universes that are contained within this one if any of its cells are filled with a universe or lattice. @@ -570,6 +591,25 @@ class Universe(object): return cells + def get_all_materials(self): + """Return all materials that are contained within the universe + + Returns + ------- + materials : dict + Dictionary whose keys are material IDs and values are Material instances + + """ + + materials = OrderedDict() + + # Append all Cells in each Cell in the Universe to the dictionary + cells = self.get_all_cells() + for cell_id, cell in cells.items(): + materials.update(cell.get_all_materials()) + + return materials + def get_all_universes(self): """Return all universes that are contained within this one. @@ -775,6 +815,25 @@ class Lattice(object): return cells + def get_all_materials(self): + """Return all materials that are contained within the lattice + + Returns + ------- + materials : dict + Dictionary whose keys are material IDs and values are Material instances + + """ + + materials = OrderedDict() + + # Append all Cells in each Cell in the Universe to the dictionary + cells = self.get_all_cells() + for cell_id, cell in cells.items(): + materials.update(cell.get_all_materials()) + + return materials + def get_all_universes(self): """Return all universes that are contained within the lattice From b9a439da11233b1569d8eb3629c543c5f0136818 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 12 Oct 2015 23:16:45 -0400 Subject: [PATCH 099/130] Python API now allows IDs to be greater than or equal to zer --- openmc/material.py | 2 +- openmc/mesh.py | 2 +- openmc/plots.py | 2 +- openmc/surface.py | 2 +- openmc/tallies.py | 2 +- openmc/universe.py | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/openmc/material.py b/openmc/material.py index b4a553e66..4c3a63696 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -157,7 +157,7 @@ class Material(object): msg = 'Unable to set Material ID to "{0}" since a Material with ' \ 'this ID was already initialized'.format(material_id) raise ValueError(msg) - check_greater_than('material ID', material_id, 0) + check_greater_than('material ID', material_id, 0, equality=True) self._id = material_id MATERIAL_IDS.append(material_id) diff --git a/openmc/mesh.py b/openmc/mesh.py index e410c9910..822370c01 100644 --- a/openmc/mesh.py +++ b/openmc/mesh.py @@ -145,7 +145,7 @@ class Mesh(object): AUTO_MESH_ID += 1 else: cv.check_type('mesh ID', mesh_id, Integral) - cv.check_greater_than('mesh ID', mesh_id, 0) + cv.check_greater_than('mesh ID', mesh_id, 0, equality=True) self._id = mesh_id @name.setter diff --git a/openmc/plots.py b/openmc/plots.py index 66419a6ff..07da4d855 100644 --- a/openmc/plots.py +++ b/openmc/plots.py @@ -144,7 +144,7 @@ class Plot(object): AUTO_PLOT_ID += 1 else: check_type('plot ID', plot_id, Integral) - check_greater_than('plot ID', plot_id, 0) + check_greater_than('plot ID', plot_id, 0, equality=True) self._id = plot_id @name.setter diff --git a/openmc/surface.py b/openmc/surface.py index ae2e222ac..155219a4d 100644 --- a/openmc/surface.py +++ b/openmc/surface.py @@ -119,7 +119,7 @@ class Surface(object): AUTO_SURFACE_ID += 1 else: check_type('surface ID', surface_id, Integral) - check_greater_than('surface ID', surface_id, 0) + check_greater_than('surface ID', surface_id, 0, equality=True) self._id = surface_id @name.setter diff --git a/openmc/tallies.py b/openmc/tallies.py index f990572e5..5baebd087 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -400,7 +400,7 @@ class Tally(object): AUTO_TALLY_ID += 1 else: cv.check_type('tally ID', tally_id, Integral) - cv.check_greater_than('tally ID', tally_id, 0) + cv.check_greater_than('tally ID', tally_id, 0, equality=True) self._id = tally_id @name.setter diff --git a/openmc/universe.py b/openmc/universe.py index f8ecb535c..1504a3cb6 100644 --- a/openmc/universe.py +++ b/openmc/universe.py @@ -144,7 +144,7 @@ class Cell(object): AUTO_CELL_ID += 1 else: cv.check_type('cell ID', cell_id, Integral) - cv.check_greater_than('cell ID', cell_id, 0) + cv.check_greater_than('cell ID', cell_id, 0, equality=True) self._id = cell_id @name.setter @@ -442,7 +442,7 @@ class Universe(object): AUTO_UNIVERSE_ID += 1 else: cv.check_type('universe ID', universe_id, Integral) - cv.check_greater_than('universe ID', universe_id, 0, True) + cv.check_greater_than('universe ID', universe_id, 0, equality=True) self._id = universe_id @name.setter @@ -685,7 +685,7 @@ class Lattice(object): AUTO_UNIVERSE_ID += 1 else: cv.check_type('lattice ID', lattice_id, Integral) - cv.check_greater_than('lattice ID', lattice_id, 0) + cv.check_greater_than('lattice ID', lattice_id, 0, equality=True) self._id = lattice_id @name.setter From ebe8ac3902a5f8e393b5436c01f4910db1d6cede Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 12 Oct 2015 23:56:13 -0400 Subject: [PATCH 100/130] Updated IPython Notebook examples to use new Python API Region abstraction --- .../examples/multi-group-cross-sections.ipynb | 73 +++++----------- .../examples/pandas-dataframes.ipynb | 86 ++++++------------- .../pythonapi/examples/post-processing.ipynb | 74 +++------------- .../pythonapi/examples/tally-arithmetic.ipynb | 74 +++++----------- 4 files changed, 83 insertions(+), 224 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index e66dd4764..511328d25 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -167,27 +167,13 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Instantiate a Cell\n", "cell = openmc.Cell(cell_id=1, name='cell')\n", "\n", "# Register bounding Surfaces with the Cell\n", - "cell.add_surface(surface=min_x, halfspace=+1)\n", - "cell.add_surface(surface=max_x, halfspace=-1)\n", - "cell.add_surface(surface=min_y, halfspace=+1)\n", - "cell.add_surface(surface=max_y, halfspace=-1)\n", + "cell.region = +min_x & -max_x & +min_y & -max_y\n", "\n", "# Fill the Cell with the Material\n", "cell.fill = inf_medium" @@ -479,8 +465,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-11 11:02:44\n", + " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", + " Date/Time: 2015-10-12 23:49:21\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -565,20 +551,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9700E-01 seconds\n", - " Reading cross sections = 8.9000E-02 seconds\n", - " Total time in simulation = 1.2140E+01 seconds\n", - " Time in transport only = 1.2131E+01 seconds\n", - " Time in inactive batches = 1.8560E+00 seconds\n", - " Time in active batches = 1.0284E+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 = 0.0000E+00 seconds\n", + " Total time for initialization = 4.2400E-01 seconds\n", + " Reading cross sections = 9.5000E-02 seconds\n", + " Total time in simulation = 1.3063E+01 seconds\n", + " Time in transport only = 1.3047E+01 seconds\n", + " Time in inactive batches = 2.0150E+00 seconds\n", + " Time in active batches = 1.1048E+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 = 1.0000E-03 seconds\n", " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.2547E+01 seconds\n", - " Calculation Rate (inactive) = 13469.8 neutrons/second\n", - " Calculation Rate (active) = 9723.84 neutrons/second\n", + " Total time elapsed = 1.3498E+01 seconds\n", + " Calculation Rate (inactive) = 12406.9 neutrons/second\n", + " Calculation Rate (active) = 9051.41 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1028,8 +1014,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", "[ NORMAL ] Iteration 0:\tk_eff = 0.685185\tres = 0.000E+00\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", @@ -1337,18 +1322,7 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -1356,20 +1330,19 @@ "# Create fuel Cell\n", "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", "fuel_cell.fill = fuel\n", - "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", + "fuel_cell.region = -fuel_outer_radius\n", "pin_cell_universe.add_cell(fuel_cell)\n", "\n", "# Create a clad Cell\n", "clad_cell = openmc.Cell(name='1.6% Clad')\n", "clad_cell.fill = zircaloy\n", - "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", - "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", "pin_cell_universe.add_cell(clad_cell)\n", "\n", "# Create a moderator Cell\n", "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", "moderator_cell.fill = water\n", - "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", + "moderator_cell.region = +clad_outer_radius\n", "pin_cell_universe.add_cell(moderator_cell)" ] }, @@ -1885,7 +1858,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/pandas-dataframes.ipynb b/docs/source/pythonapi/examples/pandas-dataframes.ipynb index 1a6d99fd7..294c35ba0 100644 --- a/docs/source/pythonapi/examples/pandas-dataframes.ipynb +++ b/docs/source/pythonapi/examples/pandas-dataframes.ipynb @@ -164,18 +164,7 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -183,20 +172,19 @@ "# Create fuel Cell\n", "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", "fuel_cell.fill = fuel\n", - "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", + "fuel_cell.region = -fuel_outer_radius\n", "pin_cell_universe.add_cell(fuel_cell)\n", "\n", "# Create a clad Cell\n", "clad_cell = openmc.Cell(name='1.6% Clad')\n", "clad_cell.fill = zircaloy\n", - "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", - "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", "pin_cell_universe.add_cell(clad_cell)\n", "\n", "# Create a moderator Cell\n", "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", "moderator_cell.fill = water\n", - "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", + "moderator_cell.region = +clad_outer_radius\n", "pin_cell_universe.add_cell(moderator_cell)" ] }, @@ -236,32 +224,14 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", "root_cell.fill = assembly\n", "\n", "# Add boundary planes\n", - "root_cell.add_surface(min_x, halfspace=+1)\n", - "root_cell.add_surface(max_x, halfspace=-1)\n", - "root_cell.add_surface(min_y, halfspace=+1)\n", - "root_cell.add_surface(max_y, halfspace=-1)\n", - "root_cell.add_surface(min_z, halfspace=+1)\n", - "root_cell.add_surface(max_z, halfspace=-1)\n", + "root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n", "\n", "# Create root Universe\n", "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", @@ -409,7 +379,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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTA4VDE2OjEw\nOjMyLTA0OjAwm8uP7QAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0wOFQxNjoxMDozMi0wNDow\nMOqWN1EAAAAASUVORK5CYII=\n", + "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+4PhbRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE1LTEwLTEyVDIzOjQ5\nOjA0LTA0OjAw6Y3dGwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNS0xMC0xMlQyMzo0OTowNC0wNDow\nMJjQZacAAAAASUVORK5CYII=\n", "text/plain": [ "" ] @@ -598,8 +568,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 16:10:32\n", + " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", + " Date/Time: 2015-10-12 23:49:04\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -663,20 +633,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.1200E-01 seconds\n", - " Reading cross sections = 9.5000E-02 seconds\n", - " Total time in simulation = 8.7750E+00 seconds\n", - " Time in transport only = 8.7640E+00 seconds\n", - " Time in inactive batches = 1.3210E+00 seconds\n", - " Time in active batches = 7.4540E+00 seconds\n", - " Time synchronizing fission bank = 2.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", + " Total time for initialization = 4.0100E-01 seconds\n", + " Reading cross sections = 8.9000E-02 seconds\n", + " Total time in simulation = 9.1400E+00 seconds\n", + " Time in transport only = 9.1280E+00 seconds\n", + " Time in inactive batches = 1.3230E+00 seconds\n", + " Time in active batches = 7.8170E+00 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", " SEND/RECV source sites = 0.0000E+00 seconds\n", - " Time accumulating tallies = 1.0000E-03 seconds\n", + " Time accumulating tallies = 3.0000E-03 seconds\n", " Total time for finalization = 0.0000E+00 seconds\n", - " Total time elapsed = 9.1960E+00 seconds\n", - " Calculation Rate (inactive) = 9462.53 neutrons/second\n", - " Calculation Rate (active) = 5030.86 neutrons/second\n", + " Total time elapsed = 9.5500E+00 seconds\n", + " Calculation Rate (inactive) = 9448.22 neutrons/second\n", + " Calculation Rate (active) = 4797.24 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1106,7 +1076,7 @@ "data": { "image/png": "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\nkiRJEsA/A3sng0v+IomuAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1129,7 +1099,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1140,7 +1110,7 @@ "data": { "image/png": "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\n/wfC21DgNNvIcQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2345,7 +2315,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 38, @@ -2356,7 +2326,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEZCAYAAABvpam5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FFXbh+/dTdndVGroBAGRIl0ERAwgSBFRxIIgYgV7\nV7Ch2AEriAjyiqgIoqgIvIooEXlFhU+QjigiTXpPT/b3/TGTsAkJBJKwWTj3de2VnZlzzvxmdnKe\nOc9zChgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FQKhkKTAi0CIPBYDBA\nO+AnYD+wB1gItCximQOBH/PsmwQ8W8RySxIfcBg4BGwF3gRCCpn3aeCDkpFlONMp7ENoMJxKooFZ\nwCDgEyAcuBBIC6SoAnABWSV8jsbABqA28AOwFhhbwuc0GAyGoKMlsO84aW4FVgMHgVVAM3v/EOBP\nv/2X2/vrAylAJtZb/D67jHQso3QI+NJOWwX4DNiJVWnf7Xfep4FPsd7oDwA3k/sNPx6rtTAA+AfY\nBTzml98DvA/stfU/Amw+xnX6gLP8tqcBY/y23wA22VqWYLXYALra15VuX9tSe38MMBHYBmzBanU5\n7WN1sIzTflv31GPoMhgMhlJHFLAby6XUFSiT5/hVWBVfC3u7NlDD/t4HqGR/vxrL5RNnb9/A0W6r\n94DhfttO4P+AJ7Ba5rWAv4Au9vGnsSrky+xtNzCMo43HO1gtpsZAKlDPPv4SMB+rEq8KLMeq/AvC\nZ18fwDlYlf4Av+P9sO6PE3gA+BcIs48NAybnKe9z4G0sI1YB+AW4zT72MVb8BruMtsfQZTAYDKWS\nc7Aq9s1ABlaroKJ97BtytwaOxVKOVPQDyd94+Mc8zsdqMfgzFPiP/f1pIDHP8ac52nhU8Tv+C5Yh\nA8sQdfY7djPHb3kcwDKCPqyYx7HYC5ybjy6wjGgqlsHLpi/wvf39fSyjV/U45zAYcpqrBkNpYy1w\nI1AdaIRVGb9uH6uGVQnnxwAsg7HP/jQCyp3AeWva59rn9xnKEcMFVqvneGz3+54MRNrfq5DbWBSm\nrGZ2/muwrq+m37GHsNxf+22tMUD5AsqpCYRitU6yr20cVgsELBeaA/gVWIl1/w2GfDEBc0MwsA7r\nrTjbvbIZyz+fl5rAeKAjsAgQliFx2MeVT568+zYBfwNnF6BF+eTJr9yC+BfLIK61t6ufQN7pQC+s\nFsWNWJ0IHsa63lV2mr0UfL2bseIg5bBaMXnZwZF7fAEwDysGsuEENBrOEEzLw1AaqYflv892n1TH\ncq8ssrffxXrjbo5VUdbBinlEYFWYu7Ge7RuxWh7Z7MBqtYTm2ecfkP4VK8D8CFZcwGWXkd1N2MHR\n5LevID7BasnE2td3FydmfF7CuhfVsGJDmVjXGwY8hdVTLZvtWG60bH3/AnOBV+28Tqx4Snv7+FV2\nuWC1ZET+RsZgMMbDUCo5hBV7+AXL178IK7D8oH38U+B5YApWr6oZWEHj1cArdvrtWJX+Qr9yv8N6\nQ9+O1ZMKrJ5HDbBcODOwKstLgaZYb9y7sFoz2ZVyQS0P5dkuiOFYrqq/sSry6VgB+ILIW9ZKrBjF\nA8DX9ucPYCNWbzL/4Pt0++8erJ5YYLm9wrDu1V47TXYHg5bAzxzpeXaPXa7BcMrpitU8Xw88WkCa\nN+3jv3OkuyXAvcAKrH+We0tQo8EQSG7H6n1lMBhsXFj97eOx3ATLsPra+9MdmGN/Px/rrQesN8YV\nWL1CXMC3HOmuaDAEM5Ww4glOLPfceqw3fIMhqChJt1UrLOOxEaur5VSsYJ8/l2EFQsFyUcRi/XPV\nt7dTsUbv/gD0LkGtBsOpIgyrh9NBLDfaF5jR4oYgpCR7W1Xl6C6J5xciTRWsVsdzQFksA9IDK5Bp\nMAQ7mzgyDsNgCFpK0ngUtgdJfj1V1gIvYwUUk7C6W5peHwaDwVBKKEnjsZXcfdirc/SAqLxpqtn7\nwBrRmz2q9wXymcKhSpUq2rZtW7GINRgMhjOIv8h/rFSpIARLYDyWn/d4AfPWHAmYw5ERvTWANeTu\nv56Ngplhw4YFWkKRMPoDSzDrD2btUvDr58TGFhVYwZcUmVgDoL7B6jE1EcsIDLKPv4NlOLpjBdaT\nyD0dwqdYI2EzgDuwAoynFRs3bgy0hCJh9AeWYNYfzNoh+PUXByU9Pcl/7Y8/7+TZvquAvO0L2G8w\nGAyGAGNGmAeQgQMHBlpCkTD6A0sw6w9m7RD8+ouDE5mTpzRiu+8MBoPBUFgcDgcUsf43LY8AkpiY\nGGgJRcLoDyzBrD+YtUPw6y8OjPEwGAwGwwlj3FYGg8FwhmHcVgaDwWAICMZ4BJBg95sa/YElmPUH\ns3YIfv3FgTEeBoPBYDhhTMzDYDAYzjCKI+ZR0iPMDSeBz+fj999/JzU1laZNm+LxeAItyWAwGHJh\n3FYBJD+/aVpaGgkJPbjwwqvo2vVO6tVrxtatW4/OXAoIdr+v0R84glk7BL/+4sAYj1LGa6+9wZIl\nISQlreXgwd/Ytu1qbrvt/kDLMhgMhlyYmEcpo1+/W5kypQUw2N6zhFq1bmHDhmWBlGUwGE4jzDiP\n05DzzjsXr3c61uq7IjT0Q5o2NauWGgyG0oUxHgEkP7/pXXfdQefOFfF4ahIRUYs6df7H+PGvnXpx\nhSDY/b5Gf+AIZu0Q/PqLA9PbqpQREhLC559PYdOmTaSlpVG7dm1cLlegZRkMBkMuSjrm0RV4HWsl\nwXeBl/NJ8ybQDUgGBgJL7f1Dgf6AD1iBtcpgWp68p13Mw2AwGEqa0h7zcAFjsAxIA6Av+a9hXgeo\nC9wGvG3vjwduBZoD59plXVuCWg0Gg8FwApSk8WiFtTb5Rqx1yKcCvfKkuQx43/7+CxALxGGtV54B\neLFca16gdA52KALB7jc1+gNLMOsPZu0Q/PqLg5I0HlWBzX7bW+x9hUmzF3gF2ARsA/YD80pMqcFg\nMBhOiJIMmBc2GJGf3602cB+W++oAMB3oB3yUN+HAgQOJj48HIDY2lqZNm5KQkAAceTsordvZ+0qL\nHqO/dOk7nfUnJCSUKj2nu/7ExEQmTZoEkFNfFpWSDJi3Bp7GinmAFQD3kTtoPg5IxHJpAawFLgIS\ngM7ALfb+6+3y7sxzDhMwNxgMhhOktAfMl2AFwuOBMOAaYGaeNDOBAfb31ljuqR3AOnvbg3WBFwOr\nS1BrQMh+MwhWjP7AEsz6g1k7BL/+4qAk3VaZwF3AN1i9pSYCa4BB9vF3gDlYPa7+BJKwuuMCLAMm\nYxkgH/AbML4EtRoMBoPhBDBzWxkMBsMZRml3WxlKiF27dnHJJVdSpkxVGjVqw//93/8FWpLBYDjD\nMMYjgJyM31QSXbpcwfz5Ndi//ydWrbqTDh26s3379uIXeByC3e9r9AeOYNYOwa+/ODBzWwUBBw8e\nZMqUKRw8eJA2bdqwevVyMjIWYNn+mjgcn/DTTz/Ru3fvQEs1GAxnCCbmUco5cOAATZu2ZceOc8jI\nqEFo6Eekpe3H59sEVAKyiIxsyYwZI+jcuXOg5RoMhiDArGF+BjBhwgT+/bcJaWlTAMjMvITY2EFk\nZCSQlHQdXu9PnHtueTp06BBgpQaD4UzCxDwCSGH8prt37yM9vZ7fnrNxOsVHH73MkCFpjBrVi8TE\n2YSEnPr3gGD3+xr9gSOYtUPw6y8OTMujlNOtWxdGj+5HcnJ3oAZwN+CkXbt29OqVd55Jg8FgODWY\nmEcQcOeddzF27AdYYy0vIyQknO7dD/Hll1MCLc1gMAQhJuZxhuByhQOPA48AkJn5Bz//3C2gmgwG\nw5mNiXkEkML6Tc86qzpu949YM7WAw7GA6tVrnPD5vv32W5o2bU+dOi0YNuw5srKyTrgMf4Ld72v0\nB45g1g7Br784MC2PIGDw4MFMmfIla9ach9NZCYfjN957b+4JlbFkyRIuv7wfycnjgCqMGnU/GRmZ\nvPDC0yWi2WAwnN6YmEeQkJmZyfz580lKSuKCCy6gQoUKJ5T/4YeHMmpUONYs+QDLqVz5KrZtW1fc\nUg0GQynHxDzOIEJCQoo0CNDrdeNy7eGIp2ov4eHuYtFmMBjOPEzMI4CcSr/pLbfcRFTUp7hcDwOv\n4/X25/nnhxSpzGD3+xr9gSOYtUPw6y8OTMvjDKF69er8/vvPvP76Wxw4sJ5rr33PTGdiMBhOGhPz\nMBgMhjOMYFjPoyvWuuTrgUcLSPOmffx3oJm9rx6w1O9zALinRJUaDAaDodCUpPFwAWOwDEgDoC9Q\nP0+a7kAdrLXObwPetvevwzIkzYAWQDLweQlqDQjB7jc1+gNLMOsPZu0Q/PqLg5I0Hq2w1ibfCGQA\nU4G8kzFdBrxvf/8FiAXi8qS5GPgL2FxSQg0Gg8FwYpRkzKMPcAlwq73dHzgfa2a/bL4CXgR+srfn\nYbm3/NdV/Q+wBBibzzlMzMNgMBhOkNI+zqOwtXreC/DPFwb0pOB4CQMHDiQ+Ph6A2NhYmjZtSkJC\nAnCkaWm2zbbZNttn8nZiYiKTJk0CyKkvSzOtga/9todytBEYB1zrt72W3G6rXnnKyIuCmfnz5wda\nQpEw+gNLMOsPZu1S8Oun8C/3BVKSMY8lWIHweKwWxDXAzDxpZgID7O+tgf3ADr/jfYGPS1CjwWAw\nGE6Ckh7n0Q14Havn1USs+MYg+9g79t/sHllJwI3Ab/b+COAfoBZwqIDybSNqMBgMhsJSHDEPM0jQ\nYDAYzjCCYZCg4RhkB7SCFaM/sASz/mDWDsGvvzgwxsNgMBgMJ4xxWxkMBsMZhnFbGQwGgyEgGOMR\nQILdb2r0B5Zg1h/M2iH49RcHxngYDAaD4YQxMQ+DwWA4wzAxD4PBYDAEBGM8Akiw+02N/sASzPqD\nWTsEv/7iwBiPIGfJkiW0b9+Dhg3b8sQTw8nMzAy0JIPBcAZgYh5BzJ9//knTpm1ISnoJqIvX+yQ3\n3tiSMWNeCbQ0g8FQijExjzOcL774gvT0a4CbgfYkJ3/A++9/EGhZBoPhDMAYjwBSVL9paGgoTudh\nvz2HCA0NK1KZJ0Kw+32N/sARzNoh+PUXB8Z4BDF9+/YlMvI7XK5HgHfxenvzwAN30a/frcTHN+ai\ni3qwbt26QMs0GAynISbmEeRs2bKFF198hZ0793Hlld146633WLy4Mmlp9+BwLKBMmZH88cfvlCtX\nLtBSDQZDKcGs52GMRy727dtHXFwNMjL2kb08fVRUNyZPHsTll18eWHEGg6HUEAwB865Y65Kv5+j1\ny7N50z7+O9DMb38s8CmwBliNtUztaUVx+E03bNjAkCGP88ADj7Bq1SqkLI4svChgL263u8jnyY9g\n9/sa/YEjmLVD8OsvDkJKsGwX1hKzFwNbgcVYa5av8UvTHaiDtdb5+cDbHDESbwBzgD62zogS1BqU\nrF+/nhYt2pGUNACfL4p33ulNjx49+fbbLiQn34DbvZD4eCcdO3YMtFSDwXCaUZJuqzbAMKzWB8AQ\n++9LfmnGAfOBafb2WuAiIBVYCpx1nHOc0W6rW2+9i4kTyyM9be+ZwvnnT+K22/ryww+/4HZDjx7d\nadeuHWXLls3Jd+jQIYYNe56VK/+kdesmPP74I4SHhwfkGgwGw6mntLutqgKb/ba32PuOl6YaUAvY\nBbwH/AZMALwlpjRIOXgwGamS357KJCUlc8MNA9i5cxcfffQ911//GnXqnMvy5csByMjIoF27Sxg7\n9l++/fYqRo1aTM+e1+BvhFetWsWcOXPYtGnTKb4ig8EQLJSk26qwTYK81k9YupoDd2G5u17Hark8\nlTfzwIEDiY+PByA2NpamTZuSkJAAHPFLltbt119//aT01qxZkz59BrJs2c/ADKAeEEV4+G1ccEEX\nJk+ezIIFu0hOfgsIBTbQr99gRo9+gdWrV7Nhw0HS0t4DFpCScjc//tiPzZs3s2HDBiZMmMQXX8wl\nNPRcUlN/ZujQBxk27Kli1V9ato3+wG37xwxKg57TXX9iYiKTJk0CyKkvSzOtga/9todydNB8HHCt\n3/ZaIA6oBPztt78dMCufcyiYmT9//gnnycjIUI0a58jpHCHYK7hDDkcZValyjp599iX5fD499tgT\ngmEC2Z8tio6OkyQtXLhQUVFNBT77WKY8nsrasGGDli1bJq+3imCnfew3eTyxSk1NLTb9pQmjP3AE\ns3Yp+PVT+Jf7gBAC/AXEA2HAMqB+njTdsYLiYBmbn/2OLQDOtr8/DbyczzkC/Ruccv766y9FRFT3\nMwxSTEyC5s6dm5NmxowZiohoKNgt8MnlGqYLL+wmSUpNTVXt2o0VGnqfYK7Cw6/X+ed3lM/n0xdf\nfKHo6B65yvZ44rRly5ZAXa7BYCgBKAbjUZJuq0wst9M3WD2vJmL1tBpkH38Hy3B0B/4EkoAb/fLf\nDXyEZXj+ynPsjCU2NpaMjP3ATqAikEpm5j+5AuIXXHABbvchkpKqAl4iIjxMmfILAOHh4SxaNI/7\n7nuMNWteoFWrJowc+RYOh4NGjRqRmfkrsApoCHyBxxNCXFzcKb9Og8FgKEkCbcCLxMk2fYcOHaaI\niLPlcj2kiIiW6t27v3w+n3bt2qVRo0bp7LMbKSSkn93yWCGPp6UmTZpUqLI/+OAjud3R8nqrqkyZ\nKvr555+LXX9pwegPHMGsXQp+/ZTyloehhHjhhadp3741S5cupXbth+nTpw+7du2icePW7N/fnrS0\nrsAk4F1gHykpcSQmLuKGG244btn9+19H796Xs2vXLqpUqUJoaGgJX43BYAhGzPQkpwnDhj3Diy/+\nS0bGOHvPPcBULO/fCsqWXcTGjauJiooKnEiDwVAqKO3jPAynkH37DpKRUctvzyfAXOBJ4BNSUlrw\n8ccfB0acwWA47TDGI4D49xUvKr16dcfrHQ0swurlfAConnM8K6s6hw8fLiD3yVGc+gOB0R84glk7\nBL/+4sAYj9OETp068fbbL1G58g3ExrajVq26uN2DsOacnElIyFS6du16vGIMBoOhUJiYx2lKcnIy\ngwffz3//O5eyZcsxduzLtGnThk2bNlGlShWio6MDLdFgMAQIs56HMR6FZv78+fTqdQ1SDFlZuxk/\n/i36978u0LIMBkMAMAHzIOdU+U1TUlLo1esaDh36mMOH15OSspBBg+4t8sSHwe73NfoDRzBrh+DX\nXxwY43EGsHXrVny+CKCTvachoaGNWbt2bSBlGQyGIMa4rc4AkpKSqFChGikp32Mt1rgFj6c5y5f/\nRJ06dQItz2AwnGKM28pQKCIiInj//XfxejsTE3MRHk8znnnmMWM4DAbDSWOMRwA5lX7Tq666kvXr\nlzNjxjBWrvyFhx++r8hlBrvf1+gPHMGsHYJff3Fg5rY6g6hSpQpVqlQJtAyDwXAaYGIeBoPBcIZh\nYh6GEmf16tV06dKbc8+9kCFDhpGRkRFoSQaDoRRQ0sajK9bSsus5egnabN60j/+O1RUom43AcmAp\n8GvJSQwcpd1vunXrVtq06ci8eQmsXPkso0cv4tZb7845Xtr1Hw+jP3AEs3YIfv3FwckajwmFSOMC\nxmAZkAZAX/JfhrYOUBe4DXjb75iABCyD0uokdRqKwKxZs8jI6IJ0D5BAcvJUpkyZjHEVGgyG4/m8\nXFgLQ7yWZ39LYMlx8rYBhmEZD4Ah9t+X/NKMA+YD0+zttcBFwA6sqWFbAnuOcQ4T8yhm/vnnH26+\n+V7WrVtP2bIRrF9fnZSUz+yjWwgPb0BKyoFsn6nBYAhCTkXMIwvIbwKk4xkOgKrAZr/tLfa+wqYR\nMM8+162FOJ+hiCQnJ9O27cUkJp7Hli0fs3p1K9LT5xES8gDwPhERPbn//vuN4TAYDIVyWy3Ecj9d\nCDT3+xyPwjYJCqqJ2mG5rLoBd9rnP60oDr9pamoqixcvZuXKlUV2Jy1dupTDh2PIynocaExm5mjC\nwqK56qp99Or1La+/fjcvvPB0Tvpg9/sa/YEjmLVD8OsvDgozzqMZliEYnmd/h+Pk24r/akTW9y3H\nSVPN3gewzf67C/gcK+7xY96TDBw4kPj4eABiY2Np2rQpCQkJwJEfuLRuL1u2rEj5P/nkE+666yFS\nU8uQlbWfhg1r8uKLw+jUqdNJlbd69WrS0/8FMoBQ4BsyMw9y11230qZNG3744Qd++OGHYtMf6G2j\n32yfKduJiYlMmjQJIKe+LGlcwAMnmTcE+AuIB8KAZeQfMJ9jf28N/Gx/9wLZi21HAP8DuuRzDp3J\nXHzx5XK5nhFIkCaP52K9+eboky4vKytLCQk95PF0Fbwhh+M8uVzl5HZX1GWXXauMjIxiVG8wGAIF\nhfcMFUhhYh59T7LsTOAu4BtgNVZQfA0wyP6AZTg2AH8C7wB32PsrYbUylgG/ALOwFuQ2+LFmzTqy\nsq6wt8JISbmU338/uZlyN2/ezPnnd2Lhwu8JC1tKXNwbOBxRZGVtJzX1H+bN28mYMWOLT7zBYAhq\nTibm0YLCxTwA/gvUw+qO+6K97x37k81d9vEmwG/2vg1AU/vTyC/vaUV2s/JkOffchoSETMV6iUjB\n6/2c5s0bnnA5kujYsSdLl3YkM3M7Bw6MZ+fOHfh8D2M1IN0kJ/dh8eIVOXmmTJlKu3aduemmO9iw\nYUORriNQFPX+B5pg1h/M2iH49RcHJRnzMJQwEye+wYUXdmXnzulkZR2iS5eODBp02wmXs2vXLjZv\n3kxW1hNY/Rcuw+k8H+k9fL6uQCYezxwaN24PwBtvjOGxx94kObk3ixaFM2PGBaxcuZhq1aoV6/UZ\nDAZDSRFo12HASU9P14oVK/Tnn3/K5/MddXz69E9VtWo9xcRU1vXX36bk5OSj0iQnJys01CvYnBM/\n8XrPUcWKNRQd3UwREbXVvn03paamSpIqVjxLsNROK4WGDtZLL710QrpXrVqlHj2uUatWnfXii6OU\nlZV1cjfAYDCcMBRDzKMwLY9KwPNY4y+yR4u3ASYW9eSGohMaGkqjRo3yPfbzzz8zYMCdpKR8AsQz\nffq9OBz38/7743Kl83g8PPvsswwffiEZGVcQFvYTF13UiE8+mcSKFSsIDw+nSZMmOJ2WlzMrKxPw\n5OT3+bxkZGQWWvOmTZto3boDhw8PQarHypXPsmvXbl555bT0ThoMZyxfA9dgzTMFVh/OlYGTk4tA\nG/AiMX/+/BIt/6mnhsnheDynhQB/q0yZqgWm//777/Xyyy/r448/VmZmZq5jGzZs0E8//aS9e/dq\nyJCn5PW2EowSjFdERHmtXbu20Lpee+01hYXd6qdroyIjy5/0dZ4sJX3/S5pg1h/M2qXg188panmU\nx+oplT29SAZWTypDKScmJpqwsP8jLS17zwYiI2Nyjk+dOo2ZM7+lUqVyPPLI/XTo0IEOHXKHspYv\nX86DDz5GYuKPuN01ge3MmjWdmJho3n33A2rUqMnLL8+hXr16bNmyhcGDH2Tdur9o0aIxY8eOomzZ\nskfpcjqdOBz+j1AmDoeZ4NlgON1IBMphzW4L1niMHwKmJjeBNuClmn379ql69XoKD79WTudQeTwV\n9fnnn0uSXnpplLzeeoJxCgm5V3Fx8dq9e3eu/J99NkNhYTGCaEFtQRVBe8XGVj4qvpKUlKRq1c6W\ny/Wk4GeFhd2uJk3a5hvL2LZtm2JjK8vpfFrwsSIimujJJ4eX3I0wGAy5oBhaHoWZpKgFMBpoCKwC\nKgB9sKZQDzT2fTAUxIEDB3jvvfc4cOAg3bt347zzzgMgOroihw4tBM4GwOO5lldfTeCCCy7gqade\nZu/egyxZ8j+Sk+OxZop5HUgHLsPhSOTAgd3s37+f/fv3c/bZZ/PLL7/Qs+dDHDyYPXu+D6+3BitW\nLOCss846SteGDRsYNuwlduzYS+/elzBo0C1mziyD4RRRHBMjFpZQrPEW52KNFi8tBNqAF4lA+k3d\n7mjB9py4Q3j4bXriiScUGVlBDsergk8FtQTVBb/6xSfGKSysnAYNukehodGKijpHlSvX1vTp0xUZ\neY4g006XLLe7nLZs2RKwazwewe63Dmb9waxdCn79nIIR5tlkYAXJV2C9fhqCnL59++Px9AcWARMJ\nCZnBoUOHSUnpj3Q/cCXWlGKHgU+xnrUMYBodO57Phx8mkpHxEYcOrWHHjjt54YU3adiwCm731cAE\nvN5L6datK1Wr5p1IOX9SUlL46KOPePvtt1m/fn2JXHNJsm3bNpYsWcKBAwcCLcVgOCUEu5/ANqKG\nEyUjI4PHHnuGmTPnUqFCOd544zlmzZrNs8/uJyvrVTvVzzidF+PzZQFxhIVl0rp1YxISzuPZZzOQ\nXrDT7cTrrc8//6zj+edfYvPmXbRt25x77rmTkJDj98lISkqiZcuL2Ly5LD5fDRyOL5k9e3rOBG+l\nnREjXmPYsGcJC6uB9C+zZk2nffv2gZZlMBSIWcPccNLs3buXzMwkXC7h84n16/+kX7/r8Hg+xOF4\nDZiIw9GV0NCzCQurTXR0KiNGPMz8+bNo0KABXu9cIAkAh+MLypWrRPXqdZgwYTrz5n1Dq1YtCmU4\nAN599102bqxBUtI3pKS8S3LyRG699WTn4zy1LF++nGeeGUlq6nIOHlzGoUOTueyyq/H5fIGWZjAY\njkGgXYdFIlB+023btqlMmcqCKMEIwQcKD6+pcePGa/ny5br88n6qUKGOnM4HBJsEjQXlBeG69NIr\nlZWVpeuuu1lhYeUUHd1SZcpUVXh4jOB3O94xRzExcTkj0gsiMzNTY8a8pUaNzhN0EaT6jUepVuL3\noTju/7Rp0xQV1dsvJiSFh8dq165dRRd4HILZ7x7M2qXg188pGueRH0ux5rwyBCGjR49l376ywADg\nYQDS0uJ56aU7+fvvW/n88w9p0uQidu3qBtyCFf94EtjLrFkt+eqrr/jwwwl06XIhZ599Ntu3b+fG\nG8eSltbYPkM3MjPdbNmyhdq1axeoo2/fm5g9eyPJyTdgxVc6A7MJDx9Gx47BMXVavXr1yMpahLX8\nTBVgHuHhYfmObzEYDKWHQBvwoKRbt8sEkYIn/N6Yf1bFinUkWfNllS8fL7hCUEGwzS/dY3rqqWG5\nylu7dq0rOBSeAAAgAElEQVQ8nji/dMvldsfo8OHDBWrYsmWL3O5ygiQ7T4agqpzOEF1ySW8dOHDg\nmNdw4MAB7du3r8j3ojh44YWRcrvLKjq6uaKiKgb9W6nh9IdT2NvKcJowefKHfPfdYqx4xThgPPAV\n0I+2bZsA8Msvv5CSEgHsBNKwZtYHSMPlmkvt2rnHbdSrV4+hQ+/H42lGTExnvN6O/Oc/7xAREVGg\njpSUFJxOL0fmyAohOroK338/j6+//ozo6Oh882VkZHD11TdQvnxlKlasRvfufUhNTT3Ju1E8DB36\nEOvX/863377Npk3rgibQbzCUFIeBQwV8DgZQlz+BNuBFIhBvqDVrnitIFJwjeM5uXXRUWFhlff31\n19q/f79GjRqliIjGgizB04IIQTO5XNV0ySVX5Mx7lVf/mjVrNGfOHG3cuPG4OjIzM9WgwXkKDb1X\n8JtcrmdVpUqdY7ZWJGn48Bfl9V5st1hS5fFcrvvvH3JS9yLYWwjBrD+YtUvBr58SbnlEYi0Fm98n\n/9fCo+kKrAXWA48WkOZN+/jvHB1HcWHFV74q5PkMxyEl5TCwACveMRpYgcPxM40axePz+TjrrIYM\nH/45yck7sdb8upiwsCuoWzeT//3vU/77389wuVy5ypTEr7/+yoYNG2jevDk1a9Y8rg6Xy0Vi4mx6\n9NhNjRoD6NjxNxYt+u6YrRWAH374leTk27BWKg4nJWUwCxb8esw8BoMhcFwI3Gh/rwDUKkQeF9by\nsvFYI9SPt4b5+RxZwzybB4CPgJkFnCPQBjxoSEtL09NPPy2XK1JwqeAiQWW7VfGknM6H5HTGyuF4\nx45BpMrhaGEfj1KlSnX066+/HlVuVlaWrrzyekVE1FZ0dGdFRlbQ//73vxK7jsGD71Vo6B0Cn0AK\nCRmqq68eWGLnMxhORyiGlkdheBprDfE/7O2qwE+FyNcGazr3bIZwZGbebMZhTfeezVogzv5eDZiH\ntWJhQS2PQP8GQUF6erpateogp7OqINs4+ARnCSb7BcPL+C0IJcFTgvME/wimyO0uo61bt+Yqe8aM\nGYqMbC5IsfN8oerVzylW/ZmZmdq7d698Pp92796tWrUaKiqqnaKiOqhKlTpHacqP3bt366233tKr\nr76qP//8s1j1GQzBBqcoYH4FcBnZI8JgK5ZL63hUBTb7bW+x9xU2zWtY/UhP29FWp2od5FmzZrF6\ndSo+XyxWAw+swaXhQGW/lDVwOCZgPVf7sBp9DiAV6Et6+nn873//y0mdmJjI33//TXp6O8Bt772Y\nf//9u9i0f/rpZ0RHlycurgY1apzDjh07WLnyV6ZOHcqUKQ+wdu1vVKlS5ZhlbN++nQYNWvLQQwsZ\nMuQPmjRpzZIlS4J+Hepg1h/M2iH49RcHhTEeaeSuwI/tlD5CYS1b3iHyDuBSrK4+S/M5bjhB9u3b\nh1Qby/v4EpYx2EZo6EHCw+8H/g9YgNu9m4oVP8TlqozV8DsPawLlDsB2YDNRUVG5ym7evDkhITOx\nxjmA0zmOBg1aFErXnj17uO++R7jiiusZN248yjPVzJ9//smAAYNJTv6OjIxDbNnyMF26XI7H46F7\n9+5ceumlR+nJj5dffpW9e3uRkjKF9PS3SUp6mXvvfaJQGg0GQ/4UZpDgdOAdIBa4DbgJeLcQ+bYC\n1f22q2O1LI6Vppq970qs1k53rFfaaGAyVpQ3FwMHDiQ+Ph6A2NhYmjZtmtNVMvvtoLRuZ+8r6fO1\nb98e6VHgHqzQUxQOh4NrrrmOsLAw5s4dQEhICFdf3Z8OHRLo0eMyrD4M2S2IZkAC1aqJ0NBQ8vL4\n43fw9NNn43SGExMTweefJx5X36FDh2jQoBl79jQjK+sK5s59i7lzv+Oee24nISGBP//8kyFDhuDz\nVeZIP4o67Ny5jT179lC+fPlCX/+OHXvJzGyJ9dhOBFJYs2YfmZmZp+T+B/vzUxLbCQkJpUrP6a4/\nMTGRSZMmAeTUlyWNA6gBdAFG2Z/OhcwbAvyFFTAP4/gB89YcHTAHuAgT8ygy8+bNU/Xq9eX1llGH\nDpdq+/bt+abLyMhQSEi4YHdO7MPhaKcePXooLS2twPIPHjyoTZs2KT09XaNGva6LL+6tm266Q9u2\nbcs3/dSpUxUZeYlffGWbnM5QTZ06Ve++O1EeT3l5vb3sBahutGM0y+V2Ryk9Pb1AHT6fTxMnvqeu\nXa/W9dffpr/++ktTp06T211LUE4wVrBAISEX6uab7zyxm2gwnCZwCgLmDoq2Xnk3YB1Wr6uh9r5B\n9iebMfbx37H6hublIk7T3lalta/43Xc/JK/3PMF7CgkZrNjYOPXpM0DPPPOckpKSctLlp3/QoHvl\n9bYVTFNIyCOKi6uV70jwDz74QJGR2XNCpQguFNRTZOSlgnDBEvvYYUF1eTwXyeOpoA8/nHJM7c8+\n+5K83oaCD+V0DlNsbGVt3bpV3btfKmhon+cmwSqFhnqKfK8CSWl9fgpDMGuXgl8/p6i31ftAq1Nx\nopMg0L9BkSitD6DP59PYseN0+eX9dfbZzeXxtBOMk9vdRy1atFdGRoako/VnZmbarZY9OS2K0NBL\nFBFRVnFxtTVmzNs5aXfs2KEyZarI6RwluFvQ2R6UeFDgzumKC5LH00d33HGH1qxZc1ztsbFVBKtz\n8oaF3ayRI0eqRo36gv6C7wUPCM5ReHhUsd63U01pfX4KQzBrl4JfP6fIeKwDsoANWItBrQCWn4oT\nF4JA/wanNTt37rTXMD9kV8ZZiow8Vz/++GO+6TMyMuRyhQkO+LmjugleFiyR13uWPv30s5z0q1ev\nVvPmF8jrLSfoJGhlp48XjLHzr5DHU1GrVq06ptZDhw5p7NixCg+PFfzlZ7zu0KOPPiqPp4ptnLK7\nKdfRLbcMLtb7ZTAEC5yirrqXALWBjkBP+3NZUU9sKP2kpaXhcoVjjeYGcOJ0xpCamsp3333HXXc9\nwFNPPc3OnTsBCAkJoW/fAXg8V2IN8RmO1WHuJqAFycmP8sknswBrjqrBgx/kjz+SSU31YHXqew24\nHNgFDANigJbcfvv1NGjQIJe2vXv3ctVVA4mPb0xCwqU0atSSBx+cS3p6A7uMb3A4xhAePp0ePXpg\nvf9k2rmFy5XB5ZdfWjI3zmAwlHoCbcCLRGlt+v7xxx+67rqb1bnzlapZs6HCwm4V/CqX6zlVqnSW\nxo0bL6+3quA2hYQMVsWK8dq5c6cka0DiE08MV8uWnVSmTLxgVE4rwOUaojvuuE+S9N577ykiIkHW\nmueRgp1+rZUBghcEe+Tx3Ki33347lz6fz6fmzS9UWNjtgt/kcLxgD3A8YLcu7lBoaJwuueRK/f77\n7/L5fOrcuZecziaC6wQJglqKjY0r0sy8Pp9P69ev14oVK44ZxC8pSuvzUxiCWbsU/Po5RW6r0kyg\nf4MiURofwH/++UfR0XFyOp8TTJHXW09NmrTVWWc1U5cuvbVx40ZVrlxX8JNgvh1XGKhRo0YdVdZP\nP/0kr7e8nM6HFBp6m8qUqaJ//vlHkvTss8/K6RxiG4tygj/9jMfldq+o5fJ44rRs2bJc5W7evFke\nT0U/N5RkjYSfa3/fqqioijnpfT6feva8RlBPcLvdg+sFud1tNXny5JO6TxkZGerR4yp5PJUVGVlH\ndes2LbAHW0lRGp+fwhLM2qXg108AF4MyFAP+/fVLCx9//DEpKVfi8z0OQHJyI7Zu7cmuXRtz0qSm\nJmPNImNNzZ6ZGUdSUvJRZbVp04bFi3/gs89mEB5egf79F+eMBm/Tpg1u9y0kJ9+ONZHAJcAjWJ3u\nvsXhmIXbHcH48WNp0qRJrnLdbjdZWalYkx5EYbmkdmONTWlMePiDXHJJ15z0ixYt4vvvf8MK14UD\njwHn4HR2YcuWLdx338NkZmZx4439aNGicAMcR49+i/nz95GS8jcQxsaNj3Lbbffz5ZdTCpW/OCiN\nz09hCWbtEPz6DUHe8iiNPPfc83K57vF7o1+jsmWr50ozaNC98ng6y1p29gt5POXUps3F8nrLqnr1\n+po7d26hzjVixKsKDfXI5fIKPILLBA8LPlJMTFyBrqDMzEx17txT4eGtBGPkdl+h2rUbq2LFWvJ6\ny6p37/46dOhQTvovv/xS0dHd/K7JJyijyMiydrD+ScFz8nrLa8GCBTnn2LJli1JSUvLV0K/frXbr\nKLvM/1N8fONCXbfBEGgwbqvgNh6lsem7Zs0aOZ2RgjcF4wWV1aJF65w1PCRrht67735Y5ctXV/36\n56tRo9YKDb1dsEPwtbze8lq3bl2hzpeenq4PP/xQ0dE9/Spiye2ukO8Aw4yMDCUk9FBExLkKD2+i\nkJBYDRp0u5KTkws8x7Zt2xQZWUEw0+459rxCQ2NVu/Y5gmf9zvsfJST01LJly1SxYk15PHFyu6P1\n/vsfHFXmyJGvyOPpKkgX+BQS8rh69Li6UNdcXJTG56ewBLN2Kfj1Y4yHMR7FzcyZM+XxNBRcIIgS\n9BHUVadOPXMZEMnSn5mZKaczRJCWUwl7PH3Vt2/fQs9gu3z5cnm9lXVkGduFiowsl2/Lwwq0XyRr\n2VoJPlXt2k2Oe44ff/xRVavWk8MRKoi1A+zVBGUFK+2yZqlly06Ki6sl+NDet1IeTwWtXbs2V3lp\naWnq1KmnvN6aiopqpPj4BoWa3bc4KY3PT2EJZu1S8OvHGI/gNh6lkUmTJikysp+ghqwVB631xSMi\nWuuTTz45Kr3P55PXG6sjA/O2CKIVGnqtwsJuV2RkBT3++BNq1OgCNWnSXp99dmScx9KlS/Xhhx/q\nl19+0fDhL8ntLq+YmLaKiCivOXPm5Ktv+PDhcjqH+rUWtisiolyhrm3mzJn2NCXNZY1cl2CcoJHg\nR3m99TVy5Cv2WJEjraDo6CvyvfasrCytWLFCixcvVmpqqiSrw8GMGTP0008/yefzFUqXwXCqwRgP\nYzyKmz///FMeTzlBqCA5pwIND79Db7zxRr553nnnXXm9VeVyPaqQkDoC/5jJjXI6a9g9oWbK6Syn\nO+64WyNGvCavt7Kioq6R11tdjz/+jP766y/98MMP2rFjR4H6vvnmG3m9Z9lGaoUcjuaKja2lSZMm\nH7eyfueddxQa2lwwxE/fLjkcHtWu3Uyvvz5a6enptjFcbB/fJ6+3pn755Zfj3ruvv7ZcdtHRPRUR\nUUfXXXezMSCGUgnGeAS38SitTd+5c+cqNLScXclmCdbI66181EqC/voXLFig5557Ti1atLdjJdmV\n8/mCWX7b4+V0VrXjKpvsfTvl8VQo9CJNzz8/wp4GxSN4SfCxvN56eu21N4+Zb/ny5faI+YaC/bK6\nGr+qJk3a5Ur3zDPDZa2geIEcjgrq3/+W42ry+XyKja0k+MG+piRFRjbUN998U6hrOhlKy/Nz+PBh\n3XjjHapRo5HOP//io7pW50dp0X6yBLt+jPEwxqOk2Lp1qxo3biuXK0xud5QmTnxPkjUn1QMPPKpr\nrrlJjz/+xFFv1h9/PFVebz3BGrt1UFUwxc94jBRcK2v+qt8EcwTbFBPTJqenU158Pp9mzpypMWPG\n6Oeff5YkPfbY43I67/crd7EqVz77uNf14YdT5HJFCbxyOCqqQoWa+uOPP3KOHwmuTxLMEDyqqlXr\nHhXvyUtaWpocDpf8x554vQM1fvz442o6WYrz+Tl06JCefPIZXX31jXrzzTHHvV5/unfvI7f7GsFS\nwXhFRVXUli1bjpmnND/7hSHY9WOMR3Abj2AgOTlZWVlZkqR9+/apcuXaCg29UzBOXm99DR/+4lF5\nXn75FUVGVrRbBpcKKgpeEzwva0DgNwKvbVg6C8rK7Y7Rrl27jirL5/OpT58BioxsIrd7kLzeqnrj\njbf0xBNPyel82M94/KZKleoW6pr8R4ZnxyqymT17tqKju+SKeXi9RwY3Hos6dZrI4Rgta3LHefJ4\nKun//u//cqXJyMjQ/PnzNXv27CKNbi9O0tPT1bhxG4WHXysYL6+3na6//tZC53U6Q3VkGWIpIuIa\nTZo0qYRVG4oCxngY41EcLFiwQJdeeq26dr2qwEC1JE2YMEFeb2+/ivUveTyx+ab98ccfFRNzvp3u\nR8FttuF4QuHhjeRyxduVrATz5PWW0+zZs7V///5c5SxcuFAREXX9KqcNCguL0LJlyxQRUV4wWvCl\nvN5GevHFkTn5li5dqrvvvls1ajRU1ar1NXDg7Tp8+PBx78XixYsVERHvF1D/R6GhXn399dfas2fP\nMfOuW7dOZcpUljWlfDl5veW1ZMmSnOMpKSlq1aqDIiMbKzq6o8qVq65169Zp3bp1+u677075CPVs\nvvvuO0VGNtORmYwPKjQ0Unv37j1u3szMTIWGenSkp5xPkZGdNG3atFOg3HCyYIxHcBuP0tD0Xbhw\nobzeCoJ3BJPk9VbRl19+mW/aMWPGyO2+yc94fKnQUG++QeEDBw6obNmqgv8IdsvpfFXh4eXUrFmC\nmjdvoZCQ6/zKyRI4FRWVoAoVamr16tUaNOheVapUV1Wr1pfX2yZXSyA8vKy2b9+u3377Td26XaW2\nbbvprbfG5eiYPXu23O6ygmjBRMEyhYT0VvXq9fT6668rNTVVP/zwg9q3v0R9+tyghQsX5uj2+Xzq\n3/9WRUY2ksdzm0JCyik0tKxiYtooKqpigTMKS9KqVavsaVP+sLV+ogoVauToGjlylNzuy2TN5yU5\nHK+rWrUG8ngqKiamvSIiyuu///1voX+74np+5syZo+joBL97nKnw8DKFNmZPPPGMvYbKmwoPH6A6\ndRrnWvclP0rDs18Ugl0/xngY41FUrrxygI5Mf25VeG3bds037caNG+14wHjBIoWFnad+/QoOJi9f\nvlz1658njydGTZu20/r163XLLXfJ7a5vu7I22ud8R1YQW3I6X1RsbHWFhnaVNf7ic1nB6/GCdDmd\nr6hmzQbH7MVUs2Yjwf2Cfn7XlSQIEbRQ5cq15fFUENwrGC2vt0KueIvP59OcOXN03333ye2O15H1\nSWarfPnqBZ536tSpioq6MpehCws74o679da7bPdd9vHlssacZE8KOVNud5QWLlxYqF5axfX8HDhw\nQHFxteRyPS9YpPDwG9W6dadC9xTz+XyaMmWKbrzxdj311DNHtR7zozQ8+0Uh2PUTBMajK7AWa9Kh\nRwtI86Z9/HeOLFbtBn7BWrp2NfBiAXkD/RsEPb17Xy94269C+0ytW19SYPrffvtNF1zQVXXrttR9\n9z16zKVp87Jjxw67t9MB290UKWuQXgXBKvv8v8iKlWzN0eRy3aOIiFg5nS41aNDquL2yypSpKnhD\n0MXPFbPJNkJZslYTHOh3zWPUoUOPo96W3333XUVE3OCXzieHI0R16jRTZGR5tW/fPdco+F9//VVe\nbw0/Y/OTIiLKKjMzU1lZWXriiScUHl5X8LcgSy7XYLlcdey0vwriBK3k9dZWr159c2JNp4K///5b\nl1xyperWbakBAwbpwIEDJ13W0qVLNWHCBH399dcl3lU5LS1NkydP1qhRo47qDWgoGEq58XBhLS8b\nD4Ry/DXMzyf3GubZi0iE2Pvb5XOOQP8GQc/8+fNtV8v7gqnyeqtp+vRPS+RcGzZssKdyP+Jbh3Ps\nt+/askZ9l7eNypKcStvtvkajR48udGV63XW3KDy8l6CB3fp4TVBX1jTvkrWSYB/7+/eCWLlcFeXx\nxOqzz2bklLNo0SJ5vdX9DNnHcjgiBR8L/lVIyFA1aHBergryoYcel8dTWTExneT1ltesWbOUnp6u\nTp16KjKynsLCzhd4FRYWo/r1W8rtriBr8arGgmn2eVLldrdQv379NG3atFNqRIrKxInvyeutJK93\noCIiGurqqweWmAFJT09Xq1YdFBGRoLCwe+T1VtLkyR+WyLlONyjlxqMN1opA2QyxP/6MA67x216L\nNV2rP15gMdCAown0b1AkSkvT99tvv1XHjr3Uvv2lmjFjxvEz2Jyo/szMTNWr11whIY8K1glelTU9\n+pN266Oc4APBc/Zb+EuC/nI6o3XeeR2OmiIkm+TkZG3YsCGn51RSUpKuvnqgPJ5YOZ1eWT27OgpS\nBSvlcJRVWFgZWaPoPYJ5dqW9RF5vuVytieefH6Hw8BhFRZ2jyMiKioi4IFdLJDy8TM5aJtmsXLlS\nX3/9dU531XHjxsnr7SRrHizJ4Rirc89tK5/Pp7feekdhYVGCMMFev7Lvk9PZVhERrdSjx1X5VsCl\n5fnJJj09XeHhkYK19jUkKyLi7Hy7YBeH9mnTpikiop2OdI9eqqioCkUutzCUtnt/olDKjUcfYILf\ndn9gdJ40XwFt/bbnAdlzYruwWiuHgBEFnCPQv0GRCPYHMD/9X375pS6/vL+uv/42rVy58qjj//77\nrzp27Clr3qyLbSMiu5VwjV/lOUvWKPfzBP+Tw/GmypWrdlQPoE8//UweT6wiIqorOjpOP/zwgyTL\nRVa2bFU5ncMFH9nGyCmHw6Onnx6uqKg4wfWCOn7nlGJiLtT333+f6xw7duzQihUr9PXXXysyspGO\nzKv1lxwOr1q27KQBAwbl29VYkh588BFZ3ZSP9FLzn6m4b98b5XBUtI2mT/Cv3RL7RpCmyMj6Odd1\nvPsfSHbv3m27JY8/tUtxaB87dqw8nlv9zpcqpzPklLTUStu9P1EoBuNRkut5FFaco4B8WUBTrLVI\nvwESgMS8mQcOHEh8fDwAsbGxNG3aNGeu/cREK3lp3c7eV1r0FFX/Y489zquvvkta2vM4HLuZPr0t\n77wzmgEDBuTK/+WXUyhTpiKZmfcB24C6QDqwBpgPdADOBXxY4a62SG1JSXmPCRMm8MgjjwAwffp0\nrr/+FtLS5gPNgZF069aL3bu38dVXX5GUVBef70KsR6cLTmcVvv12FpGRkbz66ufA1cAM+7z1gemk\npPxOzZo1j7reihUrsnPnTurUiWT9+s4kJbXF4RiDw9GcJUseZNmy//Ltt62YNGkcbdu2ZeXKlaxd\nu5aaNWvSsmUzIiJeIinpXCCSkJC5NGvWnMTERPbs2cOMGV8g/QhcCrwKHAZuBsKAn3A667Bnz55i\nf36+/fZbfvzxRypVqkRCQkLOcsInW97y5cspUyaWnTvfQLobGEta2ne0bPnKUekTEhKK/Py53W58\nvk+w3kub4nLdSP36zXA6nSdV3olsF4f+U7mdmJjIpEmTAHLqy9JMa3K7rYZydNB8HHCt33Z+biuA\nJ4GH8tkfaANu8KNu3ZZ+LiDJ4Xhc99//cL5pb7rpDnm9bQUT5HBcK6v3VXVZqwiOkMdT13Y57VN2\n99HIyEa53sDnzZunmJiLcr3pRkbW1tq1azVx4kR5vVf5Hduh0FCPfD6f1q1bJ4+nkqzp2SfLirO0\nkttdQSNGvCZJ2r9/v2bMmKEvv/wy19ogGRkZ+s9//qP77rtfISGxOa4oa1r2RnrvvfdUvnwNRUU1\nV0hIRVWpco7eeutt3XHH/QoLi5LHU0nnnNMixzW2fv16RUTUsFscmbIC+/XldN4sKyb0lSIjKxx3\nxPaJkpqaqpYtL1JkZHt5PLfK662gr776qsjlrl+/XnXrNpPTGaLo6IqaNWtWofOuWLFCffoMUOfO\nV+qDDz4qVJ6ZM2eqQoWaCg316KKLuhfY+jPkhlLutgoB/sIKmIdx/IB5a44EzMsDsfZ3D7AA6JTP\nOQL9GxSJYG/65tVfq1ZTwf/8KuzndOed9+ebNysrS2PGjFWfPjfooYeG6JVXXtHQoUN1222DdMcd\n9+nzzz/XoEH3yuttIRglj+dStW7dSRkZGTllrF+/3u5ymx3QXiW3O0YHDhzQrl27VL58dblcTwk+\nk9fbRnfe+UBO3v79b5XbXVcOx1B5PPXVtWvPnDVINm/erLi4WoqK6qKoqA6qUeOcoyqlbdu2yQrs\np+YYD6inSpVqyOHI7vqcJGiusLB4PfTQY9qzZ4/++eefXG6VzMxM1a3bVCEhQwVr5XS+onLlaqhp\n03YKDfWoWrV6WrBggZKSko7q2VaU52fSpEmKiOjkFy+Yr7i4s066vLykpqYeM1CeV/u6desUGVlB\nDscoWcsf19Xo0WOLTU9xE+z/u5Ry4wHQDViH1etqqL1vkP3JZox9/Hcs3wNYPovfsAzOcqx1SvMj\n0L9BkQj2BzCv/ldeecMeLPZfwWR5POW1ePHiky7f5/Pp/fff1+DB9+iVV149aioRSXr++ZHyeOIU\nE9NFHk95vf/+B1q2bJmuueZGdezYSxde2EkXXdRTI0a8mqvS9vl8GjZsmIYPH67PPvssV0V31VU3\nyOV6MscIhoberUGD7s113jVr1sgKxPcUfCprBH1VhYZGyL+bsdUZ4AGFhnoK9MVv27ZNXbr0Vlxc\nbbVte4nWr1+fc+zQoUPq1OkyuVzhCgkJ1/33D8nRWpTnZ8SIEQoN9Z8bbK/Cw6NOurwTJa/2oUOf\nkNP5iJ+eRapevcFxy9mxY4cmTJig8ePHn9IR+sH+v0sQGI+SJtC/gcEPn8+nMWPeVvPmHdSuXXcl\nJiaekvOuWbNGs2fP1oYNG7Rq1Sp72pKRgvfk9dbMdyXAY9GiRUc7WJ1dkU3TxRf3zjmempqqSpXO\nsoPtl8haPvcWQTk5nZFyOEbY+Q4ImgreU0hI+AlNNpjNDTcMVnh4P9s9tksREc00adL7Babfvn27\nRo4cqWeeGa7ly5cXmO7nn3+2XXfLBKkKDb1TnTpddsL6ioshQx6Xw+G/TstiVatW/5h5/v77b5Ut\nW1Ve77XyevuqTJkq+uuvv06R4uAGYzyM8SiNHDx4UL16XSevt4zi4s4q1LiRf/75R++//75mzJiR\nbwvjWEydOk01ajRUhQq11LhxK/ttP7sS+lZnn33eCZX30EOPyePpKWs+rUPyejvkmjdr1apVioys\nK2t8xjmyxqeECe4SvC6nM0rWpI+xgivldnfVtdfeeEIasomPbyKrt9gtghsEd6pr1ys0bdq0XC0U\nyWvgzfoAACAASURBVJoJuXz56goLu0lO58Pyestr/vz52rZtm664or/OOed89e9/W86EjJMnf6io\nqApyOkN04YXdtHv37pPSWBwcMfpjBV/I622oESNePWaea6+9SS7X0zm/tdP5nPr0GXCKFAc3GOMR\n3MYj2Ju+Bem//PLrFB7eX9aa5j/K6407pvtq0aJFiogor8jIaxUZeYEaN26j5ORk+Xw+7dq1K1ec\nIy+JiYn2ErbzBWvtCRf9u8UuUO3azU9If2pqqi677FqFhLjlcoXruutuztVq2LZtm73a4HhZI+Tr\nyBovcq8d+3Dq008/1YUXdlXDhm314IOPndBIfH+aNr3ANkIjZM0EUE4uV5Sio69QWFi0Pv30yMqM\nDz88VC6X/0Jc09S48QWqWbO+QkKGCBYqLOxWNW16gbKyspSRkaGNGzcWajqR4ia/e79kyRJ17dpH\nbdt209tvjz/u4ML27XsKPvO73plq27ZbCSnOzfz583Xw4EHdcMNg1arVVB06HImZnSgpKSn6448/\ndPDgwWJWWTAY42GMRyApSL/XW8Y2HFbQ2Om8WoMHD853TXJJql+/lWBqTuDZ47lMjzzyiOLiaik8\nPFZeb+6R3/7cffcDOjJy3H8U+H8EX8nrPUdvvvnWCenP5vDhwwVO8NeyZXu7xdFR1uDGibIGHY5U\nuXLV9P333+daJySbvBViWlraMY3jFVf0zXN9nwvaKXtOsLCwSH333Xfy+Xy66aY7BK/ncv1Urlxb\nUVHN/fZlyeutqjlz5igurpa83qoKC4vUG2/kf4+Kk6SkpJxrLY5nf+TI1+T1tpY1LmaHvN4L9MIL\nI4+fsRiYP3++Lrqou/2S9KuczldUtmzVQrfefD6fZs+erfvuu89+caoltzum0L3MigrGeAS38Thd\niYs7S9Y07Ntst865Cg+vr8aN2+Tq9ppN2bLVBRv8Krin5fWWlzXaPHvkd3n9/fffR+V98slhCgm5\n3S/vLFWrVk8dOlymVq06a/z4d4tteowff/xRTz01TA8//LA8nqqC3Tn6rNZBH3vxrDKKiWknt7uC\nnnzyWUnSpk2b1LRpOzmdLpUrV90eTPn/7Z13eBRV98e/23dnW8huQhqQ0KQIBEFBUEDpRUQQpRfB\nQm8qKIgUqSIgiqKAIC/4ShWR8tIkIiAQqorgq3T4UQSkJqBkv78/7myymwIbkpCs7/08zz7ZmZ25\n893Jzpy595x7TjvqdEbq9Sb26fMqd+7cycGD3+SoUaN5+vRpkiLVisjT5f1+aylyc3mXLVSUOHbv\n3oerV69Wc2vtIHCYilKH7dt3oc1Wht5MvkAyzWY3o6NLEZilrjtCRYnySx+fm1y4cIHVq9elTmei\nwWDh+PGTcqXdlJQU9u37Go1GK41GK3v2HHBPfqV74fLly9TrFaaFapN2e+OAMjSkpKSwSpWa1GgK\nUwRdrFbb+JkWi5tHjhzJc/2QxkMaj4LI4sVLqCiFqdFUIvBq6hOvydSBr702NMP2zZu3pdH4onoh\nHqfZXIxGo9vnBkk6HE25fPnyDPueOXOGYWFFaTC8SGA4FSV7cwsCZe7ceVSUKGo0Q2k0VqNW+6Sf\nPjFXJJyiQuL39M4tUZRo7tmzh2XKVKFON4oitHcT9XonTabmFHXiL9BkKk2DoRCB4dTrezA0NJon\nT57kmjVraDS61J7ZKgpfyki1/U8JlCZwhVZrLHfu3MmZM2czIqIkCxWKZu/eg5icnMyHH65Ds7k1\ngTm0WBqwceNWatVDT6p+q7UzZ82alevnzePxsFGjVjQYetM7j0VRSmQr9XwgxwjkAcHj8fD69eu5\n8jBx48YN6vVmpqWU8dBqrcZVq1Zluv2JEye4adMmnjx5kt2791QfquZQZD7wzXDQME9+v+mBNB7B\nbTz+qcNWpCiqVLhwaQIJPhfHPDZt2ibDtn/++Sdr1WpMnc5Ig8HCd94ZT5PJTpGSnQQuU1GKZvlk\nfPbsWb7zzhgOHvwmd+zYkSv601OoUBSB3aqeXylqhXgzAS9RnyD7Uwxl+afnmDt3rvqUmnaz1mqL\nENjss64cRdlb8blO15+9evVlZGQcDYZS1GiKUat1sWXL1uq58VZiPJClcf322285ZcoULl68mEOH\nvs0WLTpw7NiJvHXrllq0aqN6vKvU6YoxMrIkn366Hc+cOZPpOfB4PFyzZg2nTZuWaSRdcnIy33tv\nMnv1GsAZM2bw0UfrU6czUqOx+vRySOBttm/f4Y7nO1CDEChbtmyhyxVDrdZIgyGE8fE1/QqfHT9+\nnO3bd2etWk9x/PhJd+3BbNq0iS1btqUoJfAxgeeo1ToyjXCbOfMzWiwuOp2P0WJxqbVmDqgPDiEU\n5ZhJ4AwVJYIHDhzIte+dFZDGQxqP/ORu+l94oRdNpk7qE2cSLZYGHDNmQpbb37x5M3UuxLx582mx\nhNFub0mrNZa9eg26q56zZ89y+fLl3LRpU0D5jbJz/kXCv0sEzhLYRa32Cer1VipKNPV6B4G+FBPu\noggsp6iB/iS12lAuWLCARqOVaUWi/qJWG6puqyPwEIFIirTs3hvsRNpsEQRiCFRSjUVxPvLIk0xO\nTmZ4eDG1V+ch8EPqsN7Jkyd57NgxvvXWaFqtxWk09qailGXhwqVot4fT6SxCk8lKiyWERqOTilKV\nIs9YeQI7qNe/zuLFK2Qa8fbSS31ptZal2dyDihKXOiRHiqSIVarUUotdTaRWW4oaTQ2KiZJbKQIL\nfiKQQoulEQcMyHzyKEmOG/cuLRYn9XoTn322E5OTkwP+P2XGn3/+Sbs9nCJfmofCb+Si2RzOtWvX\n8sKFCwwLK0qdbhiBZVSUmnzllX53bPPbb79l7drNCHSiiIQbQWAYO3Z8KXWbrVu3snLlWtRoFKbl\ncDtIEVzhNdxL1AeRKrRYwjlq1PgcfddAgTQewW08/ulcvXqV1avXpdkcTpOpEJs3b5Ol0zwzDh06\nxIULF/KHH37giRMnOG3aNE6fPp3nzp1LbT8xMZHHjh1jYmIi7fZwOhxNaLOV5xNPNL2jIzo9KSkp\nXLRoESdMmMD169fz1q1bHDJkOKtUeZItWrRn3brNqNNVJ+BUb7QWTps2jUePHuWUKdNUx+0ltadl\noUi1spTAx1QUN9u370CDwU6DoS4tlkrU6WzqTewmRTEuhUAV9Yk0gQZDCLXaGkwbU/+AwAM0GFy8\nfPkyd+3axSJFHqBeb6bN5uJXX33Fhg2fodnsptlcmBqNnSKU2EORXHIQxeTFLyiG1zZTpwunXh9J\nkRImisLZ7qHdXi5D7XVRJTGSYu4KCZylyeRM/V+sXbuWNlsVps1YP08xhJekLrejyfQQbbZqrFq1\ndpbh2EuWLKGilFa1X6HF8nSGCZrZ5YcffqDTWZW+PULgQQLD2aTJ8+pse9/yyheo15uyfAD55JNZ\nVJQQtdfwH5/95rB583ap50v47d5WjX/asU2msjQaixCYT2AkNRoLJ0yYkGXW6LwA0nhI41HQ8Xg8\nPHHihF+a8+xy4MAB2u3hNJtfoNncni5XDFeuXMmQkEg6HPE0m10sVKgoxXwIEvibilKHs2fPDljj\nM8+0p9X6MPX6gVSU4ixf/mFaLA0JrKVON5pOZ2FqtU4Cv9MbAmyzuZicnMyUlBT26NGfOp2ROp1R\nvcl+73PDqE+9PoZa7Ws0Gh9miRLlqNc/nO5mFkaRZbgQ3e44NmrUjP5RVodVg2SnXm+lXm9mv36v\n8+rVq/R4PBw2bKQ6N+UWRdbflhTVFP9Qb3Ien7aaqgbLxTSn/wmKHkgFAkaWKFGJBw8eTD1HCQkJ\ndDpr+Gm220vxl19+IUkuXbqUdntTn89vU6RvuUTgNq3W6uzbty9XrFhxxweIrl170j9AYA+LFatw\nz78dUkwmNJtdTKvY+H/qOZnAevVacM6cObRafStAXiSgo8NRmHPm+E/I3Lx5s1qT5heKkgLlCOyl\n6P0V56JFi0mSo0aNpk43SD3/oUyrTzOJgJ0Gg41udwm2atX+nkN8cwKk8Qhu4/FPH7bKLRo1epYa\nTVr5Vp3uTSpKONPCe/8gEEExBOC9AQzj8OFvB6R/+/bttFpLUkwKFGPPYtJfWpoRs7k6LRbfOt+k\n1VrELzLmr7/+YnJyMkuUqEzhzyCB6+oTuLetW7RYYikc7Nd9jqcQeJl6/UCOHz+eCxYsoNlcicBl\n9cb/JoHiFMWt/iZwgWZzSc6bN48kWa9eS6YVk/JGZT2o3gjN6jGo7luBokCWbwgvKYbORhO4TI1m\nOsPDY1OHjC5evEiHozBFb+oWgVkMCyuW2oM4f/48Q0IiKZz4B6nXv0iNJoQmUy/abI+zRo36fj3B\n114bTJerKK1WFzt2fCn1OMOGvU29vjWBpykKZNVm5cqP5/g3NHToSJpMMQSeUb9nSwIhtNlCuWvX\nLrpcMeqEwxUUPbUnCOymokT51bgfM2YMdbrXKeYVeQgMI+BgTExZfvzxJ6nbTZw4kUZjN/W8fkXR\nYw1XDWoCgT9oNHZjgwbP5Pi73QuQxkMaj/zkful/6KEn6J8u5HMCGqaFn5JabSdqtd6ys2dotZa+\na9SKV//q1avpdNbzad+jXuw/pa5TlNo0GkMpSsiSwFZaraGZjsdPnjyVer2LQH2KioU2+j752+2N\naLdHEniAQE8CsRRDYcOpKHGp8zZefLGP6mx2UwwrOQjs99HZi9269SJJNWS1C9Oy89akRlOIgIMG\ng40GQwSBXgSqUaMpRZPpaXUsfr26z0JVZ7KPzrLcv39/6vfavn07o6NLU6vVsXjxily9erXfvIYf\nf/yRVarUYeHCwvG+ceNGTp06lV988YVfb2PdunU0mcIonsZP02xuxhdf7EtS9BLEDP2xFAEKXVim\nTJV7cp6fOHGCe/bsSZ2rs23bNkZEFKVIGdOOwHfUat9gz579eeTIERYuXJIiCKEpgUcIdKZGM5ij\nRo1KbXPWrFlUlPpM81msZUxMmdTPz58/z+7du7NZs2a02UKp071K4CNaLMVYv34DGo09ff5/V2gw\nWLL9vXIDSOMR3MZDEhgjRoylojxO8fR+hFZrJYaERPs8aV+gxRLHYsUeoMkUSoNB4Vtvjbp7wyrn\nzp1THaqLCUwgEEuNphANhlIEvqReP4iRkSU4YcJ7NJsL0eGoQqvV7Ret4+Xq1assWrQMdboXCHxE\nrbYEHY4o9an2AoHFtNvDmZCQQJvNRZOpNIFoajQO6vWWDJPczpw5w+nTp3Py5MmsUKGGT8ZeD83m\n1hwzZhxJMZfCZHJThO7GUISC7qIos+uiyVSVer2T7dq146RJkzh9+nQuX76cISER1OvNdLuL0mRy\nUaSBJ4FLNJtDefLkyQzfcfHixdRqrRTOfiubN2+drQJMffsOIjDO5yZ6gBERpUgK34nd7juPJYVm\nszt13osv165d4/r16/ndd99lGAobMGAIzeZQOhwP0u0uwp9++okkWaZMNab1CkngI7Zt242bN29W\njbQ3S/IN9bzV5UcfpWX3vXnzJqtUqUWb7XEqSlcqipvr1q0jSZ46dYoGQyiBRwm8SMDOmjVrsW3b\nbvzqq69U34r3AYcEElmoUFSG77Vt2za++eYwTpw4kRcvXgz4vGYHSOMhjcf/Ardv32bPngNosThp\ntYZy2LCRTExMVH0elWg2u9ijR3/Onz+fn3/+eYZqg4Gwfft2hobGqL2ArQS+pcEQzYoVq7N7996p\n4aunT5/m9u3bs7yo//Wvf9Fq9R37P0mDwcJq1erSYnEyNvZBLly4kNevX+fFixe5cuVKbty4kadP\nn2ZSUtIdNR44cICFCkXRbm9Ku70aK1SozuvXr5MUkT02W3kKX0tF+odIT6eICNpNi8XpF4bq8Xh4\n7do1ejwedu3ak1ZrRer1g2i1lmOfPhlrsZw6dYo6nZ1pYcazCTj5wQcZZ6jv3buXo0aN5uTJk/3O\n1+jR79Bo7Oqj7yuWKfMISfK7776jzVaRaY73qzQa7RnO9/HjxxkZWYIOx2O02SoxPr4mr1+/zmXL\nlrFx4+Zqz++42sZsliwZzx07dvCJJ+rRYChG4AcCW6koxbhixQr269dP7Qn69j6jWLx4+QxZBm7d\nusVFixbx008/9fNXNG36FIGaPsZhK/V6Z+rnycnJfPDBalSUxtTrB1FRIrhgwRd+bS9dupSKEkHg\nLRqNnRkVVTJPDAik8Qhu4yGHrXLGtWvXmJiYyJUrV9JuD6fN1oo2Ww1WqFA9y7QivqTX//DD9Qh8\n43MDmcNmzdpmS9PMmTOpKB182riWmlF3xYpvqCihtNmKU1FC+c032Z8Mdv78eS5dupSrV69OfeIl\nhSNXpCHxEKjONH8QKRJFipxXBoMjyxQaP/30E3v16sUuXbrw66+/psfj4YoVKxgeHkeTyca6dZvz\nyy+/VENwfX0l4XzmGf/ztHbtWipKGLXa12gydWBERHGePXuW27Zt47Jly+hyRdFsfo56fX8ajYXo\ncsXQ6Yxku3bdWLnyYzSbWxGYTkWpwU6dXs6gtWnT53ySIqbQbG7DOnUa0GwuQZEHrCWFTyeJIkWO\njhZLOIU/I5yAk253Ec6cKYIq3npruLp+HEVY7XACtkyzGpDit5OUlMR3353El17qw/nz57Ny5WoE\nfLMdXCFg9NsvKSmJn376KceNG8ft27dnaLdo0fJqb9EbmdWJ776b+ylXII2HNB75SUHRX7lyLYrZ\nut7hnJacOPHuF1x6/XXqNKfIiSUuXI1mAtu0eSFbWk6ePKkOgX1CYActlqfZsmUHXrhwgYriIrBd\nbf8HWq2ue+olZaZ/zZo1tNsjKJzkVopoohEUEVdhBH4j8BktFnem/oNFixbTYgmj1dqZFkslVq1a\nS006GUbgOwKXaDD0ZJUqtanVhlMMb+2jNzrLZotks2atOXr0WG7YsIFGYziBYhSZhpNoMHRj0aKl\naLOVocPxGB0ON4cPH85evXrRZAqlcEAfp9ncgm3adOWYMePYseNL/PjjTzIdEitd+mEC23xu1J9S\nozFRRI15ew51KIY251GnK0QRzfY8hS9rHo3GEB47dowkuX//fprNhdTz5yBQkjpdA0ZEFE8NR/Zl\n/fr1fOihx2k2tyAwmYoSzxo1nqDwle2gCIZ4kdHRd04rnx6Rqud3pv0Gh3Ho0Ley1UYgQBqP4DYe\nktxBODoP+txIJmRZwfBOfP/992ps/ihqNENptbr9ZgzPnj2HpUpVYYkSD/GDDz7K0om7b98+1qzZ\niMWLV2aPHgOYnJzMHTt20OHwj25yOOJzVCzLy8KFi6goURQ1TPpQhOCupMj2W101Ji4CUaxSpXaG\n/a9du0adzsq0cNK/CJShwWBW08Z4NScR0LFZs9YUEUtO1dheoghbjaTB8CS1Wpt60/6JYg5JFwJj\nqdOVpIj2IrXa9/jYY405YsRIarW+dTyO0+mMvOt37tjxJRqNL1AEB1ynxfI4NRo903wWpIjYiqDN\nFqamezdS+DLE5wZDG86cOTO1zY0bN6rn8VOfbXpz4MDBqdscPnyY1avXo83mplZblmnDaxeo11vY\nqtXzFJFzOoaHl8jUV3MnunXrTYulqWrsN9BiKZxpDyWnIEiMRyOI2uS/IWMNcy/T1M/3A6isrisC\nYBOAAwB+BtA3k/1y/aRKgo9nn+2k3kj+JvB/VJSyXLLk7jVEMmP37t3s02cgBwx4zW+ew6JFi6ko\nseoT8mYqygOcPXtOwO2eOXNGfbL9Tb3Z/Jdmc6GAqt+dOXOGEydO5KhRo/nzzz+T9Ddk4ml1g89N\ns4fa6xhHkUTxHIFDtFge86tL4kUkX9TRN3pN3PDrUqN5hGlj+HsIOBkdXYqjR4+m0RjvZwyFsRpM\nwNefcZGAlXp9GP2HdH5mZGRpTpkyhWZzG5/1mzK96V64cIENG7akw1GYJUrEc82aNaxW7UmazWE0\nGp18/vkufPLJpyii236hqE0fSqPRyV27drFt2xcImJgWLeehxVKPCxb4Z7EtVaoqhT/Eq+djtmvX\nnaQYcoqKKkmt9l2KnuUTPtvdJmBJzaS8f/9+Tpw4kR999BGvXLkS8O/k5s2b7NatN93uYixW7MFM\n87nlBggC46GDKDEbC8CAu9cxr4a0OuYRAOLV9zaIcrbp982TE3u/KCjDPvdKQdF/+fJlNTeWKNUa\naKRVdvQ3bPgs07L8ksByPvpoo2zpnDFjJi0WN53OOrRY3Pz008wnMX722VyWK/coy5evwcmTpzI0\nNJpGY3fqdIOoKG6OGjVaNWSTKRzXRQmM8tE2gsBzBP5DnS6MWq3I3Nu9e+9MczaJnttD6n4pqpEI\nV9u2EahBkbcrgsACOhxVOG/ePHWynHeuykWKobJ3CTTy0XKAGo3Cbt26U1GqUfRuniDgoMtVnAcP\nHmTRomVoMj1PjWYIAQctlmI0mwv5peqoXr2emlzxFIFltFrDePToUZ4+fZrnz59PnSip14vwZI3G\nRYPBwXffnUpSJDKsVKk6RSTaJOr1bVmyZMXUgAMvAwYMUSeHnifwXyrKA/z3v78kKeqNKErZ1P+/\nCJ/+kCIrwMvUaGI5dOhwrlu3jooSRoOhPy2WVixWrGxqAa6CAoLAeDwK4D8+y0PUly8zADzvs3wI\nQOFM2loOoG66dfn9P8gRBeXme68UNP2+9SICITv6W7XqpN6s08bY69dvefcd03H06FGuX78+S0fs\nggX/pqLEEVhHYC31+lBqtQN9jvsvOp2xqiHblHoj02hiCCQSWE6DIZTh4cUYE1Oa06Z9yNu3b98x\n0V/FijXVm+CDBLQUyR0XUqMZRKczSn1it6jrh1FRSjAxMZEdOrxIq7WyaljiCHSlVjuUWq1DnXPy\nLhUljtOmTefq1atpsbgphnSmElhAnW4oo6JKsWTJyrTb3dTpLBTOblL0IGO4c+dOJicnU6cz0rdn\nZLO1SZ0gSQrDbLVWUG/kB2k2V+Tbb2d8iFi2bBlfeaUvR48ek2mP4NatW+zU6WWaTHZarS6OG/cu\nk5KS+OOPP3LevHmqgbyhnvtE9ZyEEqhK4B2+9FIflixZmWLYUGg1GjtwwoSsc7rlBwgC4/EsgJk+\nyx0AfJBum28A1PBZ3gCgSrptYgEch+iB+JLf/wPJ/wh79+5Vx82HExhNRXFz69atuX6c2rWfIrDI\nx1jUpwi19S5vpc0Wnc6QzWRsbEXGxlZkmTIPMzw8lnb7E7TbGzI8PJbHjx+/4zG3bdtGq9VNRelC\nvf4BAkaazWHqBMWRFMNf3rTw5RkXV54pKSn0eDxcsmQJ33rrLT7+eD3GxVVigwYtuX//fo4cOZo9\ne/bnypUreejQIdWXNIliDoRvOKybwAwKJ7PB5zPSZmvHuXPn8vbt2zQaFQLH6I2ustmq8+uvv079\nDk8+2SLdefs6R1UFd+3axS+++IKLFi2iy1WEdntZNR9ZDIHKFDPxqxF4gWLI8BEqShy/+eYbut2x\nTEuCSQKj+Oqrg+9+0PsIcsF46HPawF0IVKDmDvvZACwB0A/A9fQ7dunSBbGxsQCAkJAQxMfHo06d\nOgCAhIQEAJDLcjnHy/Hx8fjgg4lYufI/iIyMRrdu63DlyhUkJCTk6vGSkq4A+BOCBAAm6HTvICXl\nEQC/wmSagOeffwpffjkWN27sA6CHoqzAggVf46+//sKUKR9izZpq+PvvDwAk4MaNuejffyiWLfvX\nHY//44878OGHH8JiaYWePXuiTZtu2LKlOIBaAOpADAZ8AKANIiO3QqvVIiEhAS6XC6NGjfJrr2LF\niqhYsWLqsvjbHOJSPg7gLwBGAKsgLukWAMIB2AGMhxicOIO//lqHa9cehU6nw5gxYzBsWHXculUP\ninIBZcqYoChK6vl3uZwA1gMIA1AHGs1hkDcz/H9u3LiB8uXLIyYmBlu2bMn0fGzatBWTJs0AWQLJ\nyYkApgPoAuArAN3Uc7EKwJMA6gH4CXr9YXTr1gE2mw1NmzbCwoWDcfNmBwB/QFE+RZMm8/L195uQ\nkIC5c+cCQOr9sqBTHf7DVm8go9N8BoA2Psu+w1YGAGsB9M+i/fw24DmioA37ZBepP/fZtm2b+pQ+\nnsBYms0hbNWqNd3uWBYqFMN+/V7n33//zZ9//pktWz7HXr0GcM+ePan7N2jwLIF/+zz1rmflynWy\npeHMmTPqJLu5Pu0sJ9CQGs0EtmjRPlvtLVq0iDbbYxQBDc8QqE2gG43GCtRqH/Q5xgxqNFY1q66F\nOp2DDke4Wo/kLdat24AtWjzDYcOGccWKFX7JNg8dOkSHI5wGQ0/q9b1ps4WlBhd4ee+992k02qgo\n0YyIKM5ffvmF+/fv58qVK3nixAmS5JEjR2g2uylS76eow3h/p2rUaDpRry9FEc7bnAZDB9rt4X7H\nSkpKYps2L1BRQul2F+Vnn83N1vm6HyAIhq30AA5DDDsZcXeHeXWkOcw1AOYBmHKH9vP7f5AjCuLN\nKztI/XlDYmIiu3fvxUqVHqXJVJhOZ30qiptffeUfeZOZfpFC5XGKeRjJtFiac+DAN7J1fJGUsTqF\nI36tOr5flDpdbTochbOdOvzWrVusUqUWrdZ61OkG0mh0smrVapwxYwYLF46jwdCdwDgqSjQnTZqs\nzodZl2r8hL8llqLqnosajYMORx1arW6uXbs29TjHjh3j+PHjOW7cOB4+fNhPw/bt26koMfTOOtdo\nZtDpjKGiRNPpbEhFcXP58q/5/fff0+mspvo13lSP2YJiwt+ftFpLs3///uzQoQNff/11Tp8+PdXw\nBBMIAuMBAI0hIqV+h+h5AMDL6svLh+rn+wE8pK57DIAHwuDsVV+N0rWd3/8DiSRP2L17t3qz86ZM\n30lFCckynfmWLVv4+ONNGB1dmhqNQ/UfGFi2bNVsF1NatmwZbbZaFPUmqlOkO9FxwoQJPHHiBGfO\nnE2HI5x6vZlNmrTm1atX79rmzZs3OXv2bI4dOzY1S+2xY8f4ySefsEOHjuzdewA3bNjAnTt3AtaC\ncgAAE5lJREFU0uFIHwIcQaANhcP8NsXs8dcJfEeHIyygpIkzZsygonTzaXOb6m/xlpHdQUUpxHPn\nzqm+rWoEWlNkEX6eWq2bZnM4e/d+NVvnsqCCIDEeeUl+/w8kkjxhyZIldDie9ruJms2uTEvE7t+/\nXx3q+oCiJsfvFBP6fqXZ7EqdRR0oSUlJfOCBh2gytSMwjYpSMbX2/KZNm1Sj9iOBqzSZOrBVq47Z\n/n7ffvstrVY37fbWtNkq8cknn+Lt27d56tQpdT7MSfV7n6KIZlrh5wwHmhDwUK+3BGS81q5dS6u1\nLIFrahtvUgQjpJ1fkymEf/zxhxpVFeozXJVCi6UUly5dmu3vWVCBNB7BbTwK6rBJoBQU/adPn+aU\nKVM4adKkLENgM6Og6M+MX3/9lRZLGNNmzi+hyxXDffv2cfHixfzxxx9T9Q8e/CZFXYn9FMWJ0m6I\nTmd1fv/991keJ6uezNWrVzly5Gh27dqD8+fPT326Hzr0LYqIs7QZ4SEhGTPD3g2XK5rAGrWNq9Rq\ni1CrtdFsDmPDhk2oKJG025+hyVRY7Ul1pYjOSiHQkSI8eD4NhhBOnjztrr0Pj8fDLl16UFGK0ums\nR4slRM1CfEjVMJ9ms5t2ezhDQqLV7Lje0GAP7fby3LFjR2p7Bfm3EwiQxkMaj/ykIOg/fPgwQ0Ii\naTJ1o9H4Cu328NT023ejIOi/E3PmfE6z2UFFiWFoaDT79h1IRYmgw9GCihLJF1/sQZIcNmw4tdpB\nqp8jTPUTiKEZq9XN8+fPZ2h7w4YNDA2NpkajZWxseb/Z9Flx9OhRvvLKKzQa6zNt1vkqxsVVvON+\nV65cYaNGrajXm+l0RnDOnM+p15uYVtL2ZbUncYLAFgJOjho1iosWLeL+/fv5xRdf0Gh0UaMpSp2u\nGMXExVCKiYzTqSiV+M47mc+j+O233zhkyFAOGjSYe/fu5e7du7l69WqeOXOGs2fPpclkp6JE0WwW\n6deFhj3UaiOo19chsIpG48ssV+5hP0Nb0H87dwPSeAS38ZDknA4dXqRW682uSmo0U9m4cev8lpVr\nXL9+nUeOHOGxY8doMoUwLc34KZrNoTxx4gQPHz5Muz2cWu1IAq8SUGg0htFqDeWqVasytHn69Gl1\nmGuD+iQ/nRaL+47lYefNm0+LxU2Hoy41GicNhvI0m1+hori5fv36O36H5s3b0mTqrBqLvVSUKJYv\nX4063VB6U5+LMrve3swwxsc/4tfGX3/9xcTERO7atYv9+g2kSHXire++h5GRpblp0yZ+/fXXqcby\nl19+oc0WRq32dYpCW26/qoCkmFh6/PhxFitWgWm5vUhgKsuVq8pq1Rqwe/feOUpgWRBBLhgPbS7c\nwCWSfOP8+T/h8ZROXSZL48KFP++wR3BhtVoRFxeHCxcuwGQqBqCo+kk0jMY4nD59GsWLF8euXd+j\nc+ezeOaZc/jyyzn4/ffduHjx/9CkSZMMbe7duxd//10WImGDFkBPJCd7MH78xEw1XLlyBS+91AvJ\nyQm4enUDyAMAzuC118Kwa9dm1KtX747fYdOmDbh1aywAB4B43LzZGQ0bPoZy5TZCr7cCuAbgiM8e\nv8Fg0Pm1YTAYULVqVVSpUgV2uw1arQIRyQ8A13Hx4iU89VQfdOz4MUqVqoh9+/Zh7NgpuHGjHzye\nCQBGIinpXbz55ji/dhVFQdGiRREaGgqRXk+g1/8XBoMWhw//Fxs3bsbmzZvv+B0lwUd+G/AcEexd\n34Kg/9NPZ1FRKlDUYDhCRanGceMmBbRvQdAfKJcvX6bdHsa0ENaNNJsd9/REnJiYSI2msI/z+CgB\nhc8+m7nj++DBg7TZSqbzpdTmhg0bAjpekSJlfXR7aLE0Z79+/UgK30qPHj0p5k28SuBZajQ2v97M\nd999x9dff4MTJkzgpUuX+Pvvv9NuD6dGM4bALOr1Dup05VTnOgnM5YMPPsqnn25PUazKq/tLut1x\nbNLkeU6e/L5fqvfNmzdTUdzU6/vTbO5As9lFs7mu+rtaT4sl3C+7bTD9djIDcthKGo/8pCDo93g8\nHDlyLJ3OCNrt4Rw06I2AS6IWBP3ZISEhgQ5HOM1mF+32ML733nv31I7H42Fk5AMESlCk14imXl+F\nI0aMznT7GzduqIbL60vZQ0Vx8dSpUwEdb82aNbRY3DSZetBqbcCyZatyzZo1ftu8/fYIxsSUZMmS\nD/rVnl+w4AsqSiSBETQaOzImpjT//PNPHjx4kG3bdqXDEUOd7kGKZIyFCewlcIyFCkVz6dJlagLJ\n7wgkUKNxUqfrSWA+FaVmav33S5cu8e23R7J16/bs3Lkz33//fYaERDF9XY1hw4an6gq23056II1H\ncBsPiSS73L59m2fPnr1josNAOHLkCENCImg2l6LFUoqVKz92x+qLmzZtosMRTqu1KC2WEC5enL2U\n9z///DPff/99zp07967ldn0pXLgERVlgb7hyG06dKjLlinTuzZlWU2M2gVo0GF5l3bpPkyRnzfqM\ncXGV6HIVodFYy6cXcplarYEbN25k0aJl1JT+71FRinPy5GksUqQc0xJPkkZjJ06cODFb37kgA2k8\npPGQSO6Vq1evcu3atUxISLijs9zLzZs3efjw4buW+E1JSeHAgUNos7lpt4dx2LCRAU3kywxRlfFE\n6k1cp3uN77zzDkmyb99BFGlcvAbhVwJ2xsSUzFAnZeHChbTbm/lsm0TAQIMhhHp9E5/1B2mzubl4\n8RK1lvjbNBq7MDKyRJble4MRSOMR3MYj2Lu+Un/+UlD1T5w4Wa3dcYzAYSpKPKdPn+G3TaDaO3R4\nUe1d/EZgDS2WMO7evZukmEhptZajyEN1myLktzEtlsgMGY8vXrxIt7sodbrRapRZUwLtCEwg0MnH\neFyi0WglKWbtDxkylOPGjc9gOArquQ8UyGgriURS0Fi69D9ISnoLQDEAxZGU9AaWLVt7T23NnDkN\nbdvGwO2uh7i4wViyZC4eekhkMGrZsiX69m0NIAYikus3APNx8+YLWLduvV87oaGhSEz8DvXr7wPw\nHICKAD4D0BIiW+6/AfwIs7krWrRoDQCoWbMmxo17B0OGDIbL5bon/f9k0qdCDzZUIyqRSAoKzZu3\nw8qVVUAOAgBotaPQps0JLFgwK0+OV6RIGZw6NQHA0wAAs7k1Jk6shT59+mTYliQiIorj/PkxANoB\nOAiTqSbi4kri+vUbaNy4Ht5/fzwsFkueaC0oaDQaIIf3f2k8JBJJrnLw4EFUr14Ht241B3AbFsta\n7N69BcWLF8+T461atQrPPdcVf//dHgbDUURFHcXevVths6WvHSfYt28fGjRogevXb8HjuYFPPpmO\nzp075om2goo0HkFuPHwL1QQjUn/+UpD1nzx5EsuWLYNGo0Hr1q0RGRnp93lua9+3bx/Wr18Pp9OJ\ndu3aZWk4vNy+fRtnz56Fy+W6p15GQT73gZAbxiOvKwlKJJL/QYoUKYJ+/frdt+PFx8cjPj4+4O31\nej1iYmLyUNE/H9nzkEgk/1gWLVqMsWM/REpKCgYM6I4XXuiS35IKBLLnIZFIJFmwcuVKdO06EElJ\nHwMwok+fntDr9ejUqUN+S/tHcD9CdRtB1CX/DRnrl3uZpn6+H0Bln/WfATgH4Ke8FJhfeAvUBytS\nf/4SzPrvh/YZMxYgKWkUgGYAGiAp6T18/PH8XGk7mM99bpHXxkMHUWK2EYByANoi8xrmJQGUAvAS\ngI99PpuDjKVnJRKJ5K6YzUYAV33WXIHJZMwvOf848trn8SiAt5FmAIaof8f7bDMDwCYAC9XlQwDq\nADirLscC+AZAhUzalz4PiUSSKbt27ULt2o2RlDQIgBGKMh4rVy7EE088kd/S8p1g8HlEAzjps3wK\nQLUAtolGmvGQSCSSbFO1alVs2bIOH3wwE7dvp+CVV5ajRo0a+S3rH0NeG49AuwXpLWDA3YkuXbog\nNjYWABASEoL4+PjU+GvvuGRBXZ46dWpQ6ZX6C9ZyMOv39Rnk9fE+++yj1OUEn/kZwaI/t/TOnTsX\nAFLvlwWd6gD+47P8BjI6zWcAaOOzfAhAYZ/lWGTtMM+ntGK5Q7AnV5P685dg1h/M2sng149cSIyY\n1z4PPYBfIepd/h+AnRBO84M+2zQB0Fv9Wx3AVPWvl1hIn4dEIpHkGrnh88jraKvbEIZhLYBfIJzi\nBwG8rL4AYDVEAePfAXwCoKfP/v8GsA1AaQi/SNc81iuRSCSSALgf8zzWAHgAIhzXW33+E/Xlpbf6\neSUAe3zWtwUQBcAEoAhE6O4/Bt9x02BE6s9fgll/MGsHgl9/biDreUgkEokk28jcVhKJRPI/RjD4\nPCQSiUTyD0Qaj3wk2MdNpf78JZj1B7N2IPj15wbSeEgkEokk20ifh0QikfyPIX0eEolEIskXpPHI\nR4J93FTqz1+CWX8waweCX39uII2HRCKRSLKN9HlIJBLJ/xjS5yGRSCSSfEEaj3wk2MdNpf78JZj1\nB7N2IPj15wbSeEgkEokk20ifh0QikfyPIX0eEolEIskX8tp4NIIoK/sbMpaf9TJN/Xw/gMrZ3Deo\nCfZxU6k/fwlm/cGsHQh+/blBXhoPHYAPIYxAOYjCTmXTbdMEoghUKQAvAfg4G/sGPfv27ctvCTlC\n6s9fgll/MGsHgl9/bpCXxuMRiNKyxwD8DeBLAE+n26Y5gM/V9zsAhACICHDfoOfy5cv5LSFHSP35\nSzDrD2btQPDrzw3y0nhEQ9Qd93JKXRfINlEB7CuRSCSSfCIvjUegYVDBHvF1zxw7diy/JeQIqT9/\nCWb9wawdCH79BZ3qAP7js/wGMjq+ZwBo47N8CEDhAPcFxNAW5Uu+5Eu+5Ctbr99RgNEDOAwgFoAR\nwD5k7jBfrb6vDmB7NvaVSCQSyT+UxgB+hbByb6jrXlZfXj5UP98P4KG77CuRSCQSiUQikUgkeUMo\ngPUA/gtgHUQ4b2ZkNanwXQAHIXo2ywA480xpYHp8KcgTJO9VfxEAmwAcAPAzgL55KzNTcnLuATHP\naC+Ab/JK4F3Iif4QAEsgfvO/QAwH329yov8NiN/OTwC+AGDKO5lZcjf9ZQD8AOAmgEHZ3Pd+cK/6\nC8K1m6tMBPC6+n4wgPGZbKODGN6KBWCAv4+kPtKiysZnsX9ucyc9Xnz9PdWQ5u8JZN+8Jif6IwDE\nq+9tEEOP91N/TrR7GQhgAYAVeaYya3Kq/3MAL6jv9bh/D0tecqI/FsARpBmMhQA6553UTAlEfxiA\nqgDegf/NN1iu3az0Z+vaDYbcVr4TCT8H0CKTbe40qXA9AI/6fgeAmLwSGqAeLwV5guS96i8M4CzE\nDxYArkM8AUflrVw/cqIdEL+PJgBmIX/CyHOi3wngcQCfqZ/dBnAlb+VmICf6r6r7KBCGTwFwOs8V\n+xOI/j8A7FI/z+6+eU1O9Gfr2g0G41EYwDn1/TmkXeS+BDIhERBPZKszWZ/bBPsEyXvVn94wx0IM\nSezIZX13IifnHgCmAHgNaQ8c95ucnPs4iBvDHAB7AMyEuAHfT3Jy/i8BeA/ACQD/B+AygA15pjRz\nAr2X5Pa+uUVuaYjFXa7dgmI81kOMcaZ/NU+3nTdGOT2ZrUvPUAB/QYyj5jWB6AEK7gTJe9Xvu58N\nYuy9H8RTzP3iXrVrADQDcB7C35Ff/5ucnHs9RMTiR+rfGwCG5J60gMjJb78EgP4QN64oiN9Q+9yR\nFTCB6s/tfXOL3NAQ0LWrz4UD5Qb17/DZOYjhnLMAIiEu7vSchnD2eCkCYXG9dIEYiqibI5WBczc9\nmW0To25jCGDfvOZe9XuHGAwAlgKYD2B5HmnMipxobwXxwNIEgBmAA8A8AJ3ySmwm5ES/Rt02UV2/\nBPffeOREfx0A2wBcVNcvA1ADwv90vwhEf17sm1vkVEN+Xru5zkSkRQwMQeYO7ztNKmwEET3gzlOV\ngevxUpAnSOZEvwbihjslz1VmTk60+1Ib+RNtlVP9mwGUVt+PADAhj3RmRU70x0NE+VggfkefA+iV\nt3IzkJ3rbwT8Hc7Bcu16GQF//fl97eY6oRDjnulDdaMArPLZLqtJhb8BOA4xFLEXokt/Pwj2CZL3\nqv8xCH/BPqSd80b3Qa8vOTn3Xmojf6KtgJzprwTR87jfoem+5ET/60gL1f0c4kn4fnM3/REQfoUr\nAP6E8NHY7rDv/eZe9ReEa1cikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQS\niUQikUgkEolEIsl/YiGK68yBmLm7AEADAFshMh88DMAKkQp9B0RG2+Y++24GsFt9PaqurwMgAcBi\niNTX8/P4O0gkEonkPhMLUfugPET+n10AZqufNQfwFYAxSMsAGwJhZBSIPE3e4kalkJa0sA5EyvEo\ntc1tAGrm3VeQSHKXgpJVVyIp6ByFyLkE9a+3zsTPEMYlBsKQvKquN0FkND0LkcepEoAUCAPiZSdE\n3QpA5BOKhejNSCQFHmk8JJLAuOXz3gNRG8b7Xg9Rta8lRCJOX0YAOAOgI0SJ0JtZtJkCeT1KgoiC\nUgxKIgl21gLo67NcWf3rgOh9AKIuiO5+ipJI8gppPCSSwEhfoY3p3o+GSB/+I8RQ1kj1s48AdIYY\nlnoA/pXZ7tSmRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQSiUQikUgkEolEIpFIJBKJRCKRSCQS\niUSS+/w/t3PPI3Lev3cAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2383,7 +2353,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 39, @@ -2394,7 +2364,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/docs/source/pythonapi/examples/post-processing.ipynb b/docs/source/pythonapi/examples/post-processing.ipynb index fbaa3b515..ecf027fda 100644 --- a/docs/source/pythonapi/examples/post-processing.ipynb +++ b/docs/source/pythonapi/examples/post-processing.ipynb @@ -159,18 +159,7 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -178,20 +167,19 @@ "# Create fuel Cell\n", "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", "fuel_cell.fill = fuel\n", - "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", + "fuel_cell.region = -fuel_outer_radius\n", "pin_cell_universe.add_cell(fuel_cell)\n", "\n", "# Create a clad Cell\n", "clad_cell = openmc.Cell(name='1.6% Clad')\n", "clad_cell.fill = zircaloy\n", - "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", - "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", "pin_cell_universe.add_cell(clad_cell)\n", "\n", "# Create a moderator Cell\n", "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", "moderator_cell.fill = water\n", - "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", + "moderator_cell.region = +clad_outer_radius\n", "pin_cell_universe.add_cell(moderator_cell)" ] }, @@ -208,32 +196,14 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:199: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", "root_cell.fill = pin_cell_universe\n", "\n", "# Add boundary planes\n", - "root_cell.add_surface(min_x, halfspace=+1)\n", - "root_cell.add_surface(max_x, halfspace=-1)\n", - "root_cell.add_surface(min_y, halfspace=+1)\n", - "root_cell.add_surface(max_y, halfspace=-1)\n", - "root_cell.add_surface(min_z, halfspace=+1)\n", - "root_cell.add_surface(max_z, halfspace=-1)\n", + "root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n", "\n", "# Create root Universe\n", "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", @@ -377,7 +347,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDhUMTM6NDI6MjAtMDQ6MDCoc1E2AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTA4\nVDEzOjQyOjIwLTA0OjAw2S7pigAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMTJUMjM6NTE6MDAtMDQ6MDDPm2Y8AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTEy\nVDIzOjUxOjAwLTA0OjAwvsbegAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -488,8 +458,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 13:42:20\n", + " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", + " Date/Time: 2015-10-12 23:51:01\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -537,31 +507,7 @@ " 19/1 1.00071 1.04214 +/- 0.00800\n", " 20/1 1.05587 1.04351 +/- 0.00729\n", " 21/1 1.03886 1.04309 +/- 0.00660\n", - " 22/1 1.04335 1.04311 +/- 0.00603\n", - " 23/1 1.04057 1.04292 +/- 0.00555\n", - " 24/1 1.01976 1.04126 +/- 0.00540\n", - " 25/1 1.05811 1.04238 +/- 0.00515\n", - " 26/1 1.02351 1.04120 +/- 0.00496\n", - " 27/1 1.05261 1.04188 +/- 0.00471\n", - " 28/1 1.03355 1.04141 +/- 0.00446\n", - " 29/1 1.02797 1.04071 +/- 0.00428\n", - " 30/1 1.03758 1.04055 +/- 0.00406\n", - " 31/1 1.04883 1.04094 +/- 0.00388\n", - " 32/1 1.03557 1.04070 +/- 0.00371\n", - " 33/1 1.02947 1.04021 +/- 0.00358\n", - " 34/1 1.03651 1.04006 +/- 0.00343\n", - " 35/1 1.03331 1.03979 +/- 0.00330\n", - " 36/1 1.05947 1.04054 +/- 0.00326\n", - " 37/1 1.05093 1.04093 +/- 0.00316\n", - " 38/1 1.06787 1.04189 +/- 0.00319\n", - " 39/1 1.01451 1.04095 +/- 0.00322\n", - " 40/1 1.02351 1.04037 +/- 0.00317\n", - " 41/1 1.04826 1.04062 +/- 0.00307\n", - " 42/1 1.04228 1.04067 +/- 0.00298\n", - " 43/1 1.03214 1.04041 +/- 0.00290\n", - " 44/1 1.04950 1.04068 +/- 0.00282\n", - " 45/1 1.06616 1.04141 +/- 0.00284\n", - " 46/1 1.07039 1.04221 +/- 0.00287\n" + " 22/1 1.04335 1.04311 +/- 0.00603\n" ] } ], diff --git a/docs/source/pythonapi/examples/tally-arithmetic.ipynb b/docs/source/pythonapi/examples/tally-arithmetic.ipynb index 2687c1326..0c9869767 100644 --- a/docs/source/pythonapi/examples/tally-arithmetic.ipynb +++ b/docs/source/pythonapi/examples/tally-arithmetic.ipynb @@ -174,18 +174,7 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create a Universe to encapsulate a fuel pin\n", "pin_cell_universe = openmc.Universe(name='1.6% Fuel Pin')\n", @@ -193,20 +182,19 @@ "# Create fuel Cell\n", "fuel_cell = openmc.Cell(name='1.6% Fuel')\n", "fuel_cell.fill = fuel\n", - "fuel_cell.add_surface(fuel_outer_radius, halfspace=-1)\n", + "fuel_cell.region = -fuel_outer_radius\n", "pin_cell_universe.add_cell(fuel_cell)\n", "\n", "# Create a clad Cell\n", "clad_cell = openmc.Cell(name='1.6% Clad')\n", "clad_cell.fill = zircaloy\n", - "clad_cell.add_surface(fuel_outer_radius, halfspace=+1)\n", - "clad_cell.add_surface(clad_outer_radius, halfspace=-1)\n", + "clad_cell.region = +fuel_outer_radius & -clad_outer_radius\n", "pin_cell_universe.add_cell(clad_cell)\n", "\n", "# Create a moderator Cell\n", "moderator_cell = openmc.Cell(name='1.6% Moderator')\n", "moderator_cell.fill = water\n", - "moderator_cell.add_surface(clad_outer_radius, halfspace=+1)\n", + "moderator_cell.region = +clad_outer_radius\n", "pin_cell_universe.add_cell(moderator_cell)" ] }, @@ -223,32 +211,14 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n", - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/universe.py:223: DeprecationWarning: Cell.add_surface(...) has been deprecated and may be removed in a future version. The region for a Cell should be defined using the region property directly.\n" - ] - } - ], + "outputs": [], "source": [ "# Create root Cell\n", "root_cell = openmc.Cell(name='root cell')\n", "root_cell.fill = pin_cell_universe\n", "\n", "# Add boundary planes\n", - "root_cell.add_surface(min_x, halfspace=+1)\n", - "root_cell.add_surface(max_x, halfspace=-1)\n", - "root_cell.add_surface(min_y, halfspace=+1)\n", - "root_cell.add_surface(max_y, halfspace=-1)\n", - "root_cell.add_surface(min_z, halfspace=+1)\n", - "root_cell.add_surface(max_z, halfspace=-1)\n", + "root_cell.region = +min_x & -max_x & +min_y & -max_y & +min_z & -max_z\n", "\n", "# Create root Universe\n", "root_universe = openmc.Universe(universe_id=0, name='root universe')\n", @@ -393,7 +363,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMDhUMTY6MDk6NTgtMDQ6MDDETy0uAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTA4\nVDE2OjA5OjU4LTA0OjAwtRKVkgAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6AgMAAAD1grKuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdC\nAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAxQTFRF\n////chIS6YCRTb/E6kGE+wAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAALKSURB\nVGje7dpLcqQwDAbgHHE2YeEj+D4cwQucBUfo+3CEXoSp8OhuhF70T4qpKXmdr21LogK2Pj7A8QmN\nP+HDhw8fPnz48Kf6VH9G+66vy+je8k19jnf8C5dXIPv86ms56lPdjvaYbyodx3ze+XLE76cXFiD4\nzPji99z0/AJ4n1lfvJ6fnl0A6x+578efMSg1wPr172/jPO5yFXM+Ef78gdblM+WPHyguP//t1/g6\npA0wfln+ho/fwgYYn19C/xwDvwHGc9OvC+hs37DTrwuwfWanXxdQTC9Mvyygs3wjTL8uwPJpn/tN\nDbSGz7T0SBEWw4vLXzbQ6b6RoveIoO6TvPxlA63qs7z8ZQPF9F+SH22vbX8OQKf5Rtv+EgDNJ3X5\n8wZaxWd1+fMGiuFvir8bvjp8J/tGy/6jAmRvhW8fwL3vVT+o3grfPoB7r/IpALI3tz8FoJN84/NV\n873hB8UnM3xzANtf8nb4dwmg3grfFEDJO8JPE0i9Ff4pAYL3pI8mkHor/HMCeO9JH00g9SafEsh7\nT/ppARBvp48UwJnelT5SACd7O31TAlnvKx9SQCd7B58KgPO+8iMFuPWe9E8F8BveWX7bAjzX9y4/\n/Jve+fhsH6Ctv7n8PTzjvY/v9gEOHz58+PBX+6v/f/wPvnd54f3j6venE/yl769Xv7+j3x/o98/V\n32/o9+fl389Xnx+g5x/o+Qt6/oOeP6HnX+j5G3z+h54/ouefV5/foufP6Pk3ev4On/+j9w/o/Qd6\n/4Le/6D3T/D9V67Y/ZsVQBq+s+8f0ftP+P41axXguP9NWgDuu/Cdfv+N3r/D9/9TAID+A7T/Ae2/\ngPs/0P4TtP8F7r9J3AIO9P+g/Udw/9Oygbf7r9D+L7j/DO1/Q/vv4P4/tP8Q7n9E+y/h/k+0/xTu\nf4X7b+H+X7T/+BPuf3aM8OHDhw8fPnz4w/4vzcvgeY10sY0AAAAldEVYdGRhdGU6Y3JlYXRlADIw\nMTUtMTAtMTJUMjM6NTI6MDgtMDQ6MDAXQ5NYAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE1LTEwLTEy\nVDIzOjUyOjA4LTA0OjAwZh4r5AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] @@ -603,8 +573,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 23535afa1c69644bb299bde18a094c3b99d53ae0\n", - " Date/Time: 2015-10-08 16:09:59\n", + " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", + " Date/Time: 2015-10-12 23:52:08\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -660,20 +630,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.0200E-01 seconds\n", - " Reading cross sections = 9.5000E-02 seconds\n", - " Total time in simulation = 1.5664E+01 seconds\n", - " Time in transport only = 1.5652E+01 seconds\n", - " Time in inactive batches = 2.3940E+00 seconds\n", - " Time in active batches = 1.3270E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 4.1300E-01 seconds\n", + " Reading cross sections = 9.6000E-02 seconds\n", + " Total time in simulation = 1.6248E+01 seconds\n", + " Time in transport only = 1.6236E+01 seconds\n", + " Time in inactive batches = 2.3150E+00 seconds\n", + " Time in active batches = 1.3933E+01 seconds\n", + " Time synchronizing fission bank = 0.0000E+00 seconds\n", + " Sampling source sites = 0.0000E+00 seconds\n", + " SEND/RECV source sites = 0.0000E+00 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 1.0000E-03 seconds\n", - " Total time elapsed = 1.6076E+01 seconds\n", - " Calculation Rate (inactive) = 5221.39 neutrons/second\n", - " Calculation Rate (active) = 2825.92 neutrons/second\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.6672E+01 seconds\n", + " Calculation Rate (inactive) = 5399.57 neutrons/second\n", + " Calculation Rate (active) = 2691.45 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", From 23f64bf3301341d393bfc9d9bfc1e05528845e57 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 13 Oct 2015 00:59:41 -0400 Subject: [PATCH 101/130] MGXS and Library classes now accept tally triggers --- .../examples/multi-group-cross-sections.ipynb | 238 ++++++++++++++---- openmc/mgxs/library.py | 19 ++ openmc/mgxs/mgxs.py | 20 ++ openmc/tallies.py | 3 +- openmc/trigger.py | 9 + 5 files changed, 246 insertions(+), 43 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 511328d25..ada6989b4 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -466,7 +466,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-12 23:49:21\n", + " Date/Time: 2015-10-13 00:55:08\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -551,20 +551,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2400E-01 seconds\n", - " Reading cross sections = 9.5000E-02 seconds\n", - " Total time in simulation = 1.3063E+01 seconds\n", - " Time in transport only = 1.3047E+01 seconds\n", - " Time in inactive batches = 2.0150E+00 seconds\n", - " Time in active batches = 1.1048E+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 = 1.0000E-03 seconds\n", - " Total time for finalization = 2.0000E-03 seconds\n", - " Total time elapsed = 1.3498E+01 seconds\n", - " Calculation Rate (inactive) = 12406.9 neutrons/second\n", - " Calculation Rate (active) = 9051.41 neutrons/second\n", + " Total time for initialization = 3.9300E-01 seconds\n", + " Reading cross sections = 9.1000E-02 seconds\n", + " Total time in simulation = 1.2182E+01 seconds\n", + " Time in transport only = 1.2171E+01 seconds\n", + " Time in inactive batches = 1.7420E+00 seconds\n", + " Time in active batches = 1.0440E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 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 = 1.0000E-03 seconds\n", + " Total time elapsed = 1.2585E+01 seconds\n", + " Calculation Rate (inactive) = 14351.3 neutrons/second\n", + " Calculation Rate (active) = 9578.54 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -679,7 +679,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1486: RuntimeWarning: invalid value encountered in divide\n" + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1487: RuntimeWarning: invalid value encountered in divide\n" ] } ], @@ -1407,7 +1407,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1428,6 +1428,28 @@ " xs_library[cell.id]['chi'] = mgxs.Chi(groups=fine_groups)" ] }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create a tally trigger set to 10% on the relative error\n", + "tally_trigger = openmc.Trigger('variance', 1E-5)\n", + "\n", + "# Add the tally trigger to each of the multi-group cross section tallies\n", + "for cell in openmc_cells:\n", + " for mgxs_type in xs_library[cell.id].keys():\n", + " xs_library[cell.id][mgxs_type].tally_trigger = tally_trigger\n", + " \n", + "# Set the trigger to active in the \"settings.xml\" file\n", + "settings_file.trigger_active = True\n", + "settings_file.trigger_max_batches = settings_file.batches * 2\n", + "settings_file.export_to_xml()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1437,7 +1459,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1477,18 +1499,150 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " .d88888b. 888b d888 .d8888b.\n", + " d88P\" \"Y88b 8888b d8888 d88P Y88b\n", + " 888 888 88888b.d88888 888 888\n", + " 888 888 88888b. .d88b. 88888b. 888Y88888P888 888 \n", + " 888 888 888 \"88b d8P Y8b 888 \"88b 888 Y888P 888 888 \n", + " 888 888 888 888 88888888 888 888 888 Y8P 888 888 888\n", + " Y88b. .d88P 888 d88P Y8b. 888 888 888 \" 888 Y88b d88P\n", + " \"Y88888P\" 88888P\" \"Y8888 888 888 888 888 \"Y8888P\"\n", + "__________________888______________________________________________________\n", + " 888\n", + " 888\n", + "\n", + " Copyright: 2011-2015 Massachusetts Institute of Technology\n", + " License: http://mit-crpg.github.io/openmc/license.html\n", + " Version: 0.7.0\n", + " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", + " Date/Time: 2015-10-13 00:55:22\n", + " MPI Processes: 1\n", + "\n", + " ===========================================================================\n", + " ========================> INITIALIZATION <=========================\n", + " ===========================================================================\n", + "\n", + " Reading settings XML file...\n", + " Reading cross sections XML file...\n", + " Reading geometry XML file...\n", + " Reading materials XML file...\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", + " Initializing source particles...\n", + "\n", + " ===========================================================================\n", + " ====================> K EIGENVALUE SIMULATION <====================\n", + " ===========================================================================\n", + "\n", + " Bat./Gen. k Average k \n", + " ========= ======== ==================== \n", + " 1/1 1.27747 \n", + " 2/1 1.24641 \n", + " 3/1 1.23998 \n", + " 4/1 1.22236 \n", + " 5/1 1.22609 \n", + " 6/1 1.14473 \n", + " 7/1 1.21385 \n", + " 8/1 1.17205 \n", + " 9/1 1.18419 \n", + " 10/1 1.22500 \n", + " 11/1 1.24778 \n", + " 12/1 1.23680 1.24229 +/- 0.00549\n", + " 13/1 1.23752 1.24070 +/- 0.00355\n", + " 14/1 1.26918 1.24782 +/- 0.00755\n", + " 15/1 1.23346 1.24495 +/- 0.00651\n", + " 16/1 1.23687 1.24360 +/- 0.00549\n", + " 17/1 1.22006 1.24024 +/- 0.00573\n", + " 18/1 1.23162 1.23916 +/- 0.00508\n", + " 19/1 1.22456 1.23754 +/- 0.00476\n", + " 20/1 1.21237 1.23502 +/- 0.00495\n", + " 21/1 1.24915 1.23631 +/- 0.00466\n", + " 22/1 1.17014 1.23079 +/- 0.00696\n", + " 23/1 1.18388 1.22718 +/- 0.00735\n", + " 24/1 1.20614 1.22568 +/- 0.00697\n", + " 25/1 1.22888 1.22589 +/- 0.00649\n", + " 26/1 1.20734 1.22473 +/- 0.00618\n", + " 27/1 1.28731 1.22841 +/- 0.00688\n", + " 28/1 1.16533 1.22491 +/- 0.00737\n", + " 29/1 1.23361 1.22537 +/- 0.00699\n", + " 30/1 1.22054 1.22513 +/- 0.00663\n", + " 31/1 1.26417 1.22699 +/- 0.00658\n", + " 32/1 1.23181 1.22720 +/- 0.00627\n", + " 33/1 1.21074 1.22649 +/- 0.00604\n", + " 34/1 1.21642 1.22607 +/- 0.00580\n", + " 35/1 1.26934 1.22780 +/- 0.00582\n", + " 36/1 1.24095 1.22831 +/- 0.00562\n", + " 37/1 1.22300 1.22811 +/- 0.00541\n", + " 38/1 1.20875 1.22742 +/- 0.00526\n", + " 39/1 1.21748 1.22708 +/- 0.00508\n", + " 40/1 1.24938 1.22782 +/- 0.00497\n", + " 41/1 1.21652 1.22745 +/- 0.00482\n", + " 42/1 1.22642 1.22742 +/- 0.00467\n", + " 43/1 1.20158 1.22664 +/- 0.00459\n", + " 44/1 1.22475 1.22658 +/- 0.00445\n", + " 45/1 1.25199 1.22731 +/- 0.00438\n", + " 46/1 1.25905 1.22819 +/- 0.00435\n", + " 47/1 1.20490 1.22756 +/- 0.00428\n", + " 48/1 1.20016 1.22684 +/- 0.00423\n", + " 49/1 1.21094 1.22643 +/- 0.00414\n", + " 50/1 1.22919 1.22650 +/- 0.00403\n", + " Triggers satisfied for batch 50\n", + " Creating state point statepoint.050.h5...\n", + "\n", + " ===========================================================================\n", + " ======================> SIMULATION FINISHED <======================\n", + " ===========================================================================\n", + "\n", + "\n", + " =======================> TIMING STATISTICS <=======================\n", + "\n", + " Total time for initialization = 3.9200E-01 seconds\n", + " Reading cross sections = 8.7000E-02 seconds\n", + " Total time in simulation = 3.2711E+01 seconds\n", + " Time in transport only = 3.2694E+01 seconds\n", + " Time in inactive batches = 3.2750E+00 seconds\n", + " Time in active batches = 2.9436E+01 seconds\n", + " Time synchronizing fission bank = 4.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 = 8.0000E-03 seconds\n", + " Total time elapsed = 3.3120E+01 seconds\n", + " Calculation Rate (inactive) = 7633.59 neutrons/second\n", + " Calculation Rate (active) = 3397.20 neutrons/second\n", + "\n", + " ============================> RESULTS <============================\n", + "\n", + " k-effective (Collision) = 1.22693 +/- 0.00341\n", + " k-effective (Track-length) = 1.22650 +/- 0.00403\n", + " k-effective (Absorption) = 1.22829 +/- 0.00354\n", + " Combined k-effective = 1.22762 +/- 0.00298\n", + " Leakage Fraction = 0.00000 +/- 0.00000\n", + "\n" + ] + }, { "data": { "text/plain": [ "0" ] }, - "execution_count": 36, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1499,7 +1653,7 @@ "\n", "# Run OpenMC with the output throttled!\n", "executor = openmc.Executor()\n", - "executor.run_simulation(output=False)" + "executor.run_simulation(output=True)" ] }, { @@ -1518,14 +1672,14 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Load the last statepoint and summary files\n", - "sp = openmc.StatePoint('statepoint.50.h5')\n", + "sp = openmc.StatePoint('statepoint.050.h5')\n", "su = openmc.Summary('summary.h5')\n", "sp.link_with_summary(su)" ] @@ -1539,7 +1693,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1575,7 +1729,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1629,7 +1783,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1671,7 +1825,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -1801,7 +1955,7 @@ "119 10002 1 5 O-16 0.000000 0.000000" ] }, - "execution_count": 41, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1821,7 +1975,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -1849,7 +2003,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 44, "metadata": { "collapsed": false }, @@ -1858,7 +2012,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1889,7 +2043,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 45, "metadata": { "collapsed": true }, @@ -1911,7 +2065,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -1950,7 +2104,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -2033,7 +2187,7 @@ "2 10000 2 O-16 3.800027 0.024538" ] }, - "execution_count": 46, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -2059,7 +2213,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -2081,7 +2235,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -2129,7 +2283,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -2157,7 +2311,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2192,7 +2346,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -2233,7 +2387,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 53, "metadata": { "collapsed": false }, @@ -2251,7 +2405,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 54, "metadata": { "collapsed": false }, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 533ca507d..1159dbe56 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -50,6 +50,9 @@ class Library(object): Domain type for spatial homogenization energy_groups : EnergyGroups Energy group structure for energy condensation + tally_trigger : Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section all_mgxs : dict MGXS objects keyed by domain ID and cross section type statepoint : openmc.StatePoint @@ -69,6 +72,7 @@ class Library(object): self._mgxs_types = [] self._domain_type = None self._energy_groups = None + self._tally_trigger = None self._all_mgxs = OrderedDict() self._statepoint = None @@ -91,6 +95,7 @@ class Library(object): clone._mgxs_types = self.mgxs_types clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) + clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo) clone._all_mgxs = self.all_mgxs clone._statepoint = self._statepoint @@ -145,6 +150,10 @@ class Library(object): def energy_groups(self): return self._energy_groups + @property + def tally_trigger(self): + return self._tally_trigger + @property def num_groups(self): return self.energy_groups.num_groups @@ -192,6 +201,11 @@ class Library(object): cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) self._energy_groups = energy_groups + @tally_trigger.setter + def tally_trigger(self, tally_trigger): + cv.check_type('tally trigger', tally_trigger, openmc.Trigger) + self._tally_trigger = tally_trigger + def build_library(self): """Initialize MGXS objects in each domain and for each reaction type in the library. @@ -211,6 +225,11 @@ class Library(object): mgxs.domain_type = self.domain_type mgxs.energy_groups = self.energy_groups mgxs.by_nuclide = self.by_nuclide + + # If a tally trigger was specified, add it to the MGXS + if self.tally_trigger: + mgxs.tally_trigger = self.tally_trigger + mgxs.create_tallies() self.all_mgxs[domain.id][mgxs_type] = mgxs diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 79f86b080..6ef313c44 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -80,6 +80,9 @@ class MGXS(object): Domain type for spatial homogenization energy_groups : EnergyGroups Energy group structure for energy condensation + tally_trigger : Trigger + An (optional) tally precision trigger given to each tally used to + compute the cross section tallies : dict OpenMC tallies needed to compute the multi-group cross section xs_tally : Tally @@ -100,6 +103,7 @@ class MGXS(object): self._domain = None self._domain_type = None self._energy_groups = None + self._tally_trigger = None self._tallies = OrderedDict() self._xs_tally = None @@ -125,6 +129,7 @@ class MGXS(object): clone._domain = self.domain clone._domain_type = self.domain_type clone._energy_groups = copy.deepcopy(self.energy_groups, memo) + clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo) clone._xs_tally = copy.deepcopy(self.xs_tally, memo) clone._tallies = OrderedDict() @@ -163,6 +168,10 @@ class MGXS(object): def energy_groups(self): return self._energy_groups + @property + def tally_trigger(self): + return self._tally_trigger + @property def num_groups(self): return self.energy_groups.num_groups @@ -220,6 +229,11 @@ class MGXS(object): cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) self._energy_groups = energy_groups + @tally_trigger.setter + def tally_trigger(self, tally_trigger): + cv.check_type('tally trigger', tally_trigger, openmc.Trigger) + self._tally_trigger = tally_trigger + @staticmethod def get_mgxs(mgxs_type, domain=None, domain_type=None, energy_groups=None, by_nuclide=False, name=''): @@ -431,6 +445,12 @@ class MGXS(object): self.tallies[key].estimator = estimator self.tallies[key].add_filter(domain_filter) + # If a tally trigger was specified, add it to each tally + if self.tally_trigger: + trigger_clone = copy.deepcopy(self.tally_trigger) + trigger_clone.add_score(score) + self.tallies[key].add_trigger(trigger_clone) + # Add all non-domain specific Filters (e.g., 'energy') to the Tally for filter in filters: self.tallies[key].add_filter(filter) diff --git a/openmc/tallies.py b/openmc/tallies.py index 5baebd087..78e247cdc 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -390,7 +390,8 @@ class Tally(object): 'since "{1}" is not a Trigger'.format(self.id, trigger) raise ValueError(msg) - self._triggers.append(trigger) + if trigger not in self.triggers: + self.triggers.append(trigger) @id.setter def id(self, tally_id): diff --git a/openmc/trigger.py b/openmc/trigger.py index 5af477edd..bcac8c31c 100644 --- a/openmc/trigger.py +++ b/openmc/trigger.py @@ -58,6 +58,15 @@ class Trigger(object): else: return existing + def __eq__(self, other): + if str(self) == str(other): + return True + else: + return False + + def __ne__(self, other): + return not self == other + def __repr__(self): string = 'Trigger\n' string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', self._trigger_type) From 26a51943e5bb1ae53a056b51971c5cffbb61ac56 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 13 Oct 2015 01:07:25 -0400 Subject: [PATCH 102/130] Added Library.correction attribute with default P0 setting --- .../examples/multi-group-cross-sections.ipynb | 70 +++++++++---------- openmc/mgxs/library.py | 19 ++++- 2 files changed, 53 insertions(+), 36 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index ada6989b4..62b22474d 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -466,7 +466,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-13 00:55:08\n", + " Date/Time: 2015-10-13 01:03:58\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -551,20 +551,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9300E-01 seconds\n", - " Reading cross sections = 9.1000E-02 seconds\n", - " Total time in simulation = 1.2182E+01 seconds\n", - " Time in transport only = 1.2171E+01 seconds\n", - " Time in inactive batches = 1.7420E+00 seconds\n", - " Time in active batches = 1.0440E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 4.5700E-01 seconds\n", + " Reading cross sections = 9.9000E-02 seconds\n", + " Total time in simulation = 1.2109E+01 seconds\n", + " Time in transport only = 1.2098E+01 seconds\n", + " Time in inactive batches = 1.8860E+00 seconds\n", + " Time in active batches = 1.0223E+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 = 0.0000E+00 seconds\n", - " Total time for finalization = 1.0000E-03 seconds\n", - " Total time elapsed = 1.2585E+01 seconds\n", - " Calculation Rate (inactive) = 14351.3 neutrons/second\n", - " Calculation Rate (active) = 9578.54 neutrons/second\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.2577E+01 seconds\n", + " Calculation Rate (inactive) = 13255.6 neutrons/second\n", + " Calculation Rate (active) = 9781.86 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1407,7 +1407,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1430,14 +1430,14 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Create a tally trigger set to 10% on the relative error\n", - "tally_trigger = openmc.Trigger('variance', 1E-5)\n", + "tally_trigger = openmc.Trigger('rel_err', 1E-1)\n", "\n", "# Add the tally trigger to each of the multi-group cross section tallies\n", "for cell in openmc_cells:\n", @@ -1459,7 +1459,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1499,7 +1499,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1525,7 +1525,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-13 00:55:22\n", + " Date/Time: 2015-10-13 01:04:11\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1611,20 +1611,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9200E-01 seconds\n", - " Reading cross sections = 8.7000E-02 seconds\n", - " Total time in simulation = 3.2711E+01 seconds\n", - " Time in transport only = 3.2694E+01 seconds\n", - " Time in inactive batches = 3.2750E+00 seconds\n", - " Time in active batches = 2.9436E+01 seconds\n", - " Time synchronizing fission bank = 4.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 initialization = 3.8500E-01 seconds\n", + " Reading cross sections = 8.8000E-02 seconds\n", + " Total time in simulation = 3.2702E+01 seconds\n", + " Time in transport only = 3.2685E+01 seconds\n", + " Time in inactive batches = 3.3740E+00 seconds\n", + " Time in active batches = 2.9328E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 8.0000E-03 seconds\n", - " Total time elapsed = 3.3120E+01 seconds\n", - " Calculation Rate (inactive) = 7633.59 neutrons/second\n", - " Calculation Rate (active) = 3397.20 neutrons/second\n", + " Total time elapsed = 3.3103E+01 seconds\n", + " Calculation Rate (inactive) = 7409.60 neutrons/second\n", + " Calculation Rate (active) = 3409.71 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1642,7 +1642,7 @@ "0" ] }, - "execution_count": 38, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -2012,7 +2012,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAADDCAYAAACxgLv/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFxZJREFUeJzt3XmYVNWZx/FvAyIKCijGBRiaxA0VRVTcpROX4BLNzKhR\n46jEOMZldOIel9gkJsRM4q6joxFxJRHRcVc0NGpcEVAEdVzoCAooi7iAcaHmj/cUVV3Ucqrq3KrT\nze/zPPV01/bWuVXvfe+5596qAyIiIiIiIiIiIiIiIiIiIiIiIiIiNfHfwIX1bkQAHWU5JDl7Am/U\nuxEBdJTlaKMV2DvntuOAp4s8ZxvgMeAjYIXHaxwCTAeWuuc8CTSW18xVNAO35dzWAhxfZdykNGLv\n1dSc2/sAXwKzPeMcR/HPZnV3HDAD+ByYB1wH9CzxnMOBZ91zJuW5vzNwCfA+8An2GRaK2Q+4B8vz\nj11bji1nAfJoxHKnU9ZtxxF3HrRgbd425/Z73e17ecZZAXw7XLPK16n0QxKRcpdyfAmMw68IbgqM\nBX6OJfNA4FrgmzJf00e5y5GrFp/BWsDWWdePAt6l+rZnq1cu1duZwO/c33WBXYABwERgjSLPWwRc\n5p6bzygXaxcX92jgiwKPvQ34O/BPwHrAvwELylmIIhoCxQHoEjBWPingTeCYrNvWB3YFPiwzVrHl\nTno56mY28L2c247Fb2u8KaV7zIcC04rc3wk4H3gb641MAfq6+64E3sN62lOAPdztI4B/YBuIT7He\n+CXA18Byd9tV7rFbYivmImx357Cs174F2+V/GPgM23O4Bfi1u78JmAucga1cH2A9lbT1gQdc+150\nbSj0vjVi79X5wO+zbn/J3ZbdYz4v6/2YCfzQ3T7ILd/XbhkXey7HucDzWM8P4CTgNaBrgba2R+ti\n78mhObd3xwrBSI8YP2XVHnNvF3egZzs+ZdVeYrY9sN75Eiy3073pA7H1ZKm7/eKs57yH5c6nWE7s\ngm0YcvNgTeAP2IZhPpYT3dx9TVgun4PtSYx1t83Jep1WbKP2CtbbH+dipp2DrQNzsfeqWG92EnCR\ni58urKdiezBzyPSYhwHPuffjA+BqMhvRp9xrfOaW8zCP5fgOtq5v765vgu29+PbQozGb8ocy0nwK\n80CsmFyGvYE9cu4/G3gV2MxdH4z1NAB+jK0YnbDiOI9MMbkYuDUn1iTgJ1nXu2Mf2LEuxhDsQxrk\n7r8FS8Bd3fU1gTHAr9z1JuArbNikM7A/trub3o0dB9yJJf8gbAV6Ku+7kCnMA9zjGoCtgNex9z+7\nMB8KbOT+PxxLzA3d9XwbzVLL0QBMxt6zzbAVebsC7WyvRmCfVb69hVuwz6mUfIV5L6xopAvBm8DJ\nRWJMBJ4BfoT1mrMNwArrj7B8Wo/M5zCczJ7UYKywHpL1vNyhjHx5cDlwH9ALW8/uB37r7mvC3p/R\nWOHrxqqFeTa2Ad8IW+9mASe6+0Zgyz8I2+u7HdvrLVaYj8eGPEe4217ANirZhXkoVpw7ueWcBZye\nFSe3+Pssx0+xDs1a7vWzO0Jlq9fuZwP2YS7JulxLuF3r2dgb1xf4C1YYx2BFE+zDuwB4y12fQaYH\ncIdrzwqssK8JbJHV7ny7ONm3HeRef6yLMR2YQNte833YFhusF54b4yuswH0DPIIVyS2wFetfsGL3\nBVZgxxZoU7a52Mq9L7abl7txARiPrZhg79lbwM552paWKrEcKfdapwH/C1yK9Yo6kj7AQvJ3FOa7\n+yvRD9sQb4ZtXA/FNtT7FHj8YVjBvAgbopoG7OjuOwor3H/G8mkxmc9hMlZMwNaBcVixhtJ5nr5+\nAtaB+RjL09HAEVmPWYHl61cUHoq5Cnu/lmB7g0Pc7YcDN2N5vtzF8RlauRXLvS2xDcbzOfdPxfY2\nV2A9/f8hs9yFlFqOm7A9zhexDs0FHu0sqJ5jzIdgW8j05WQyb/qPsd2IT4GHKnyNF7BewrewI6h7\nkXmz+gPvFHjeWdgW9GMsUXpSegXL3qAMwApa9kbnKDK9zxRtt7T5LKLtyr4M641sgI1vZT9/bolY\n6de8Fdu1PgIbk8xN8GOwFTrd5m2wYZNiSi3H37EDMgOwDW9HsxDLjXzr0cZYhwDgejL5fJ5H3OXu\n76+wDV66aB5Q4PEfA7/APrMNsc7Afe6+/lixzmdnrJf5oYtxIqU/82wbAGsDL5PJm0dou758hA3/\nFTM/6//lZDpQG1NZrk/AhkpPIX8nZHPgQaw3vhT4DaWX22c5bsL2QK7GCnjFYjpgk10o7gDWcZcD\nA8Segh2ZTe+2zcGGRHLtiQ1zHIZtaXtjH1x2LzBX7m3vYT2R7I3OOliSFOOzt/ARNsbXP+u2/gUe\nm2sCtmK/w6oJPgDrNZyC7er2xsaDiy23jwOx3cgnsXHIjuY5rHD+a87tPbBd6Sfd9Z+Ryefcg335\n3ttXC7yez+ewCPgjNs65HpaP3ynw2DuxAt4Py/frydQEn1xfiBXSrcjkei9s7L2cNhcyj8pyfTm2\ngfgZq55FBTYOPgurAT2xDlupWlhqOXoAV2DFeRT2XlQspsLsoxuZ8d41aXuQINvu2JjPBu76lsAP\nyOzS3IQdpNoUKz7bYkncAyt8C93r/JK2STYf27XM3ogsoG3iP4htkY/GxqPWAHZybYDCu4g+u2jf\nYAW2GRvL2hI7Au+T/J8D38Xel1zdXYyFWE6MxHpfaQuwlTf7LINSu7p9gBuxYaPjsPd/f492tidL\nsZXwauD72PvTiA0FzSF/UUjrhOXzGu7/Ncm8v+9gQxMXYHk4CNv7e7BArEuxTkcXrPifhA1FLcaK\n7z5YZ6ML1jNMjzH3wHq5X2JjrkeRyaX0aanZuT2ftnmwAvuMryCzrvUF9iuy3D7SefQXLBe3xHrm\nF5UR43xseOK9PPf1wPZelrnYJ+Xcn7tO+7gSG8b4d2wv//oyn99GTIW51Cl0jdgb+Zp73HJs7Cmf\nj4GDsV3AT7Gt5wQyA/KXYR/649jKdSO2kjwGPAr8H3a0eDltP9i73d9FWC8c7AM5FFsJrsDG2fbD\nhgzex7b6o8lsUPItZ+5txd6HU7Gt/HxsfPkuiu9iZceaStsDfun7ZmG9rOdc3G2wg0lpT2JjkfPJ\nnHZUajluwHpjj2LvzfHYBrGqnkSE/gsrAn/Acul5bAhnb4rvzh6D5fN12J7acuw9SzsS25NZhBXk\nC8l/vjPYRvperMi+g/UsD3b3vYftKZ3pYk0jcwbHydhwySdY0ftzVsxl2C7+31zcYcBfWTUPzsXG\nVp93yz8R65ik+fS8c+9L3/8oNv48CVsnc49nFDMPOxMln7OwjdAn2J7iuJw2NWPr1hJs3S5Um9K3\nHYKt8+kCfwZ2gPFIj3ZKB3UpdmBTpKMbhO3RxtShFAHs7Ixtsd29Ydgu58FFnyHSfv0zNszTGzsV\nb0J9myOS347Y+OHn2NH2c+vbHJFEPYINTS7Cvna+YfGHi4iIiIiIlDZ0ePqIpS66JHPZbniKOug5\nfHD9l12XDnwZkKKAEL8clWJKwfgZNzTDic1FH/LtHWYWvT9tcfO1rNdc/Psa707euuj9K41phpHF\n2+VNsZKJ1dQAYX/lzFdqeOqRkg9qbb6dxuajiz5mcoPvabFXYd9iL+YOz1gt2C8ThKBY4WONggJ5\nrdNOREQio8IsIhKZ2hXmHZqChVqraadgsRjSpFgdIVYd9Woq9lPI5dq59EO8NSpWO43lM243Avuq\ncWfsK7WX5tzvN8bswXeM2Yf3GLPEL7kx5pK57TPG7MN/jNmH7xizxK3yMebOwDVYAm+Fffd7UNFn\niLQPym2JVqnCPAz7gZJW7AdZxpGZ4UCkPVNuS7RKFea+rPpD1X0LPFakPVFuS7RKzfbqN3h8Q3Pm\n/x2aYMemCpsjAkxrgektSb+KV263Nt++8v9eTdsGPtAnq5dWdymtVGF+n1VnEFh1epcSXxwRKcv2\nTXZJGzsqiVfxyu1SXxwR8ddI27M1Jhd8ZKmhjClkJoTsis2icH81TROJhHJbolWqx/w1NmPGY9hR\n7D9ReNYQkfZEuS3RKlWYwX4PNczJnCJxUW5LlPSVbBGRyKgwi4hERoVZRCQyKswiIpHxOfhX2mdB\norAOn4YJBOwxfGKwWADPTN43aDxpHyY3PB8kzsXsHyQOwCj+GCwWfBIwloSiHrOISGRUmEVEIqPC\nLCISGRVmEZHIqDCLiETGpzDfDCwAZiTcFpFaU25LlHwK8xhs+h2Rjka5LVHyKcxPA0uSbohIHSi3\nJUoaYxYRiUyYb/6Nac78P6Sp7ewTIuWqzdRSnlqy/m+k7QwUIuVoJdTUUn5GNgcJIwLUamopT011\nfG3pWBoJNbWUiIjUmE9hvgt4Ftgcm+59ZKItEqkd5bZEyWco48jEWyFSH8ptiZKGMkREIqPCLCIS\nGRVmEZHIqDCLiEQmzHnMgbwyeZdgsX49/KxgsQC+HN41WKwXXx4eLBZfhAslyRnFxcFi/Y4zg8U6\njyuDxYLFAWOt3tRjFhGJjAqziEhkVJhFRCKjwiwiEhkVZhGRyPgU5v7AJGAm8BpwWqItEqkd5bZE\nyed0ua+AnwPTgR7Ay8BE4PUE2yVSC8ptiZJPj3k+lrgAn2FJu0liLRKpHeW2RKncMeZGYHvghfBN\nEamrRpTbEolyvvnXAxgPnI71LjI0tZSENLXFppeqncK5ramlJJhWQk8ttQZwD3A7cN8q92pqKQlp\naJNd0sYkOrVU8dzW1FISTCMhp5ZqAP4EzAKuqKJVIrFRbkuUfArz7sDRwHeBae4yIslGidSIclui\n5DOU8Qz6Iop0TMptiZKSUkQkMirMIiKRUWEWEYmMCrOISGQaAsRI0ZIKECZy14QLdd/d3w8W67ec\nHyzW299sGiwWwOL564cJ1G8tCJOr5UoRcEqoGD1NuHPE9+SVYLHMhMDxYjMKCuS1eswiIpFRYRYR\niYwKs4hIZFSYRUQio8IsIhIZn8LcDfuN2unYj72MTrRFIrWhvJZo+fxWxhfYj7wsc49/BtjD/RVp\nr5TXEi3foYxl7m9XoDOwOJnmiNSU8lqi5FuYO2G7fAuwWYVnJdYikdpRXkuUfGcwWQEMAXoCj2HT\nOrSsvFdTS0lIzz4Fzz1Vi1cqnteAppaScFoJPbVU2lLgIWBHsjNWU0tJSLvtZZe0y3+T9Cvmz2tA\nU0tJOI2EnFqqD9DL/b8WsC8204NIe6a8lmj59Jg3BsZiRbwTcBvwZJKNEqkB5bVEy6cwzwCGJt0Q\nkRpTXku09M0/EZHIqDCLiERGhVlEJDIqzCIikVFhFhGJTLlfMFl9/We4UD9s2DVYrNSCpmCxRn8r\n4EICT/TdO0icvwaJIvnsySXBYqUO2C5YLICGdwPOJfpGc7hYNaAes4hIZFSYRUQio8IsIhIZFWYR\nkcj4FubO2A+8PJBgW0TqQbkt0fEtzKdjPyIe8DCpSBSU2xIdn8LcDzgAuAloSLY5IjWl3JYo+RTm\ny4GzsdkeRDoS5bZEqdQXTA4CPsTG4JoKPkpTS0lAS1pmsKRlRtIv45fbmlpKgmkl1NRSuwEHY7t7\n3YB1gVuBY9o8SlNLSUC9mwbTu2nwyuuto+5K4mX8cltTS0kwjYSaWup8oD8wEDgC+3bsMUWfIdI+\nKLclWuWex6wj19JRKbclGuX8iNFkivW9Rdov5bZERd/8ExGJjAqziEhkVJhFRCKjwiwiEhkVZhGR\nyGhqKV9fB4w1pTlYqIYN1wsWK3XN6cFiAWx6yttB4mhqqSR9FSxSw8NjgsUCSF0T7udLGt4IeDbk\nNc3hYhWgHrOISGRUmEVEIqPCLCISGRVmEZHI+B78awU+Ab7BjhYMS6pBIjXUivJaIuRbmFPY7x8u\nTq4pIjWnvJYolTOUoal3pCNSXkt0fAtzCngCmAKckFxzRGpKeS1R8h3K2B2YB2wATATeAJ5eea+m\nlpKAZrYsZGbLolq8VPG8BjS1lITTSqippdLmub8fAfdiB0kyCayppSSgrZv6sHVTn5XXx496K6mX\nKp7XgKaWknAaCTW1FMDawDru/+7AfkDiM2WKJEx5LdHy6TFviPUm0o+/A3g8sRaJ1IbyWqLlU5hn\nA0OSbohIjSmvJVr65p+ISGRUmEVEIqPCLCISGRVmEZHIqDCLiEQmxO8EpGgJOG2LlKXbkHC/v/PF\nNeGmqQJI3R7mZyga3rA/QYKVJwUX1+FlxQwNFil1ziHBYjXMClTvHmyAAnmtHrOISGRUmEVEIqPC\nLCISGRVmEZHI+BTmXsB44HVgFrBLoi0SqR3ltkTJ57cyrgQeBg51j++eaItEake5LVEqVZh7AnsC\nx7rrXwNLE22RSG0otyVapYYyBmI/Ij4GmArciP2OrUh7p9yWaJXqMXfBzvI+FXgJuAI4D/hlm0dp\naikJqOVzaFmW+Mv45bamlpJQFrbAohavh5YqzHPd5SV3fTyWvG1paikJqKm7XdJGJTP9n19ua2op\nCaVPk13S3hpV8KGlhjLmA3OAzd31fYCZ1bRNJBLKbYmWz1kZ/4FNu9MVeAcYmWiLRGpHuS1R8inM\nrwA7Jd0QkTpQbkuU9M0/EZHIqDCLiERGhVlEJDIqzCIikVFhFhGJjM9ZGRKxL94ONx1UywU7B4sF\n0Hxh0HCy2pkaLFLD778MFuvxQLOc7VfkPvWYRUQio8IsIhIZFWYRkcioMIuIRManMG8BTMu6LAVO\nS7JRIjWgvJZo+ZyV8Sawvfu/E/A+cG9iLRKpDeW1RKvcoYx9sF/hmpNAW0TqRXktUSm3MB8B3JlE\nQ0TqSHktUSnnCyZdgR8A565yj6aWkoBa3aVGCuc1oKmlJJRX3MVHOYV5f+BlbALLtjS1lATUSNvy\nNznZlyuc14CmlpJQtnOXtNuLPLacoYwjgbsqapFIvJTXEh3fwtwdO0AyIcG2iNSa8lqi5DuU8TnQ\nJ8mGiNSB8lqipG/+iYhEpnaFeVqLYtUr1pRwsaa1fBIsVmuwSPXWqlgdIla4w8y+Z18UUrvCPL1F\nseoV6+VwsaarMOfRqlgdItbqWJhFRMSLCrOISGRCzJHSAgwPEEekkMnU55seLSi3JTn1ymsRERER\nERERkfZoBPAG8BYFf8XLy83AAmBGgDb1ByYBM4HXqG72im7AC8B0YBYwusq2dcZm1Xigyjhg5xO9\n6uK9WGWsXsB44HVsOXepME5HmT1EeV2+ULndivK6Kp2Bt7EfDFsD+5AHVRhrT2zWiRAJvBEwxP3f\nA5vRotJ2Aazt/nYBngf2qCLWGcAdwP1VxEibDawXIA7AWOAn7v8uQM8AMTsB87CC0p4orysTKrc7\ndF7X4nS5YVgCtwJfAeOAQyqM9TSwJEyzmI+tTACfYVvLTaqIt8z97YqttIsrjNMPOAC4iTBnzRAo\nTk+sgNzsrn+N9Qiq1V5nD1Fely90bnfYvK5FYe5L28bNdbfFpBHrsbxQRYxO2AqxANuVnFVhnMuB\ns4EVVbQlWwp4ApgCnFBFnIHYbxaPAaYCN5LpTVWjvc4eorwuX8jc7tB5XYvCnKrBa1SjBza+dDrW\nw6jUCmwXsh+wF5Wdn3gQ8CE2PhWqt7w7tnLuD5yC9Q4q0QUYClzn/n4OnFdl29Kzh9xdZZx6UF6X\nJ3Rud+i8rkVhfp+24yz9sd5FDNYA7sEmE7gvUMylwEPAjhU8dzfgYGz87C7ge8CtVbZnnvv7ETYL\n9LAK48x1l5fc9fFYIlejxOwhUVNelyd0biuvq9QFG2tpxLYk1RwkwcUJcZCkAUuMywPE6oMd2QVY\nC3gK2LvKmMOp/sj12sA67v/uwN+A/aqI9xSwufu/Gbi0ilhg47LHVhmjXpTXlas2t5XXgeyPHR1+\nG/hFFXHuAj4A/oGN742sItYe2G7adDKnt4yoMNZgbHxqOnYKz9lVtCttONUfuR6ItWk6dupUNe89\n2JRlL2E/njWB6o5edwcWklnB2iPldWWqzW3ltYiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiHRs/w9e\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 1159dbe56..0c4c36079 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -48,6 +48,8 @@ class Library(object): The types of cross sections in the library (e.g., ['total', 'scatter']) domain_type : {'material', 'cell', 'distribcell', 'universe'} Domain type for spatial homogenization + correction : 'P0' or None + Apply the P0 correction to scattering matrices if set to 'P0' energy_groups : EnergyGroups Energy group structure for energy condensation tally_trigger : Trigger @@ -71,6 +73,7 @@ class Library(object): self._by_nuclide = None self._mgxs_types = [] self._domain_type = None + self._correction = 'P0' self._energy_groups = None self._tally_trigger = None self._all_mgxs = OrderedDict() @@ -94,6 +97,7 @@ class Library(object): clone._by_nuclide = self.by_nuclide clone._mgxs_types = self.mgxs_types clone._domain_type = self.domain_type + clone._correction = self.correction clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo) clone._all_mgxs = self.all_mgxs @@ -146,6 +150,10 @@ class Library(object): def domain_type(self): return self._domain_type + @property + def correction(self): + return self._correction + @property def energy_groups(self): return self._energy_groups @@ -196,6 +204,11 @@ class Library(object): cv.check_value('domain type', domain_type, tuple(openmc.mgxs.DOMAIN_TYPES)) self._domain_type = domain_type + @correction.setter + def correction(self, correction): + cv.check_value('correction', correction, ('P0', None)) + self._correction = correction + @energy_groups.setter def energy_groups(self, energy_groups): cv.check_type('energy groups', energy_groups, openmc.mgxs.EnergyGroups) @@ -294,7 +307,11 @@ class Library(object): for mgxs_type in self.mgxs_types: mgxs = self.get_mgxs(domain, mgxs_type) mgxs.load_from_statepoint(statepoint) - mgxs.compute_xs() + + if isinstance(mgxs, openmc.mgxs.ScatterMatrixXS): + mgxs.compute_xs(correction=self.correction) + else: + mgxs.compute_xs() def get_mgxs(self, domain, mgxs_type): """Return the MGXS object for some domain and reaction rate type. From 0b9976d721bb1d4bebbfff1c2bf49db0cef36dc6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 14 Oct 2015 22:52:50 -0400 Subject: [PATCH 103/130] Fixed bug in EnergyGroups.get_group(...) --- openmc/mgxs/groups.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 53f032f51..db01e6125 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -103,7 +103,7 @@ class EnergyGroups(object): raise ValueError(msg) index = np.where(self.group_edges > energy)[0][0] - group = self.num_groups - index + group = self.num_groups - index + 1 return group def get_group_bounds(self, group): From 8acab8ce8c0743412184a8420ff48c48146597dd Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 15 Oct 2015 11:32:22 -0400 Subject: [PATCH 104/130] The MGXS.get_xs(...) routine now calls numpy.squeeze(...) to eliminate trivial dimensions --- openmc/mgxs/mgxs.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 6ef313c44..993946547 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -667,8 +667,10 @@ class MGXS(object): xs = xs[:, ::-1, :] # Reshape array to original axes (filters, nuclides, scores) - new_shape = (num_subdomains * num_groups,) + xs.shape[2:] - xs = np.reshape(xs, new_shape) +# new_shape = (num_subdomains * num_groups,) + xs.shape[2:] +# xs = np.reshape(xs, new_shape) + + xs = np.squeeze(xs) return xs @@ -1790,9 +1792,11 @@ class ScatterMatrixXS(MGXS): xs = xs[:, ::-1, ::-1, :] # Reshape array to original axes (filters, nuclides, scores) - new_shape = (num_subdomains * num_in_groups * num_out_groups,) - new_shape += xs.shape[3:] - xs = np.reshape(xs, new_shape) + #new_shape = (num_subdomains * num_in_groups * num_out_groups,) + #new_shape += xs.shape[3:] + #xs = np.reshape(xs, new_shape) + + xs = np.squeeze(xs) return xs From f35a68a2c7812777e308e4f6ecbc5b969030f39e Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 15 Oct 2015 11:33:52 -0400 Subject: [PATCH 105/130] Removed uncommented code from previous commit --- openmc/mgxs/mgxs.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 993946547..57a8aa046 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -666,10 +666,7 @@ class MGXS(object): # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, :] - # Reshape array to original axes (filters, nuclides, scores) -# new_shape = (num_subdomains * num_groups,) + xs.shape[2:] -# xs = np.reshape(xs, new_shape) - + # Eliminate trivial dimensions xs = np.squeeze(xs) return xs @@ -1791,11 +1788,7 @@ class ScatterMatrixXS(MGXS): # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, ::-1, :] - # Reshape array to original axes (filters, nuclides, scores) - #new_shape = (num_subdomains * num_in_groups * num_out_groups,) - #new_shape += xs.shape[3:] - #xs = np.reshape(xs, new_shape) - + # Eliminate trivial dimensions xs = np.squeeze(xs) return xs @@ -2126,9 +2119,8 @@ class Chi(MGXS): # Reverse energies to align with increasing energy groups xs = xs[:, ::-1, :] - # Reshape array to original axes (filters, nuclides, scores) - new_shape = (num_subdomains * num_groups,) + new_shape[2:] - xs = np.reshape(xs, new_shape) + # Eliminate trivial dimensions + xs = np.squeeze(xs) xs = np.nan_to_num(xs) return xs From 1aaf24bc4d69baefb68298d1aa2b1caa0fcca8e8 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 15 Oct 2015 16:06:32 -0400 Subject: [PATCH 106/130] MGXS.get_xs(...) routine now ensures that return value is at least a 1D numpy array --- openmc/mgxs/mgxs.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 57a8aa046..d4e368af5 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -668,6 +668,7 @@ class MGXS(object): # Eliminate trivial dimensions xs = np.squeeze(xs) + xs = np.atleast_1d(xs) return xs @@ -1790,6 +1791,7 @@ class ScatterMatrixXS(MGXS): # Eliminate trivial dimensions xs = np.squeeze(xs) + xs = np.atleast_2d(xs) return xs @@ -2121,6 +2123,7 @@ class Chi(MGXS): # Eliminate trivial dimensions xs = np.squeeze(xs) + xs = np.atleast_1d(xs) xs = np.nan_to_num(xs) return xs From 4847cbd38d26711ff1e391656da022ea1f27490b Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 15 Oct 2015 22:07:54 -0400 Subject: [PATCH 107/130] Added a new openmc.mgxs.Library.get_subdomain_avg_library(...) routine --- .../examples/multi-group-cross-sections.ipynb | 213 +++++++++--------- openmc/mgxs/library.py | 50 +++- 2 files changed, 156 insertions(+), 107 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 62b22474d..de7d3c2a9 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -466,7 +466,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-13 01:03:58\n", + " Date/Time: 2015-10-15 16:52:26\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -551,20 +551,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.5700E-01 seconds\n", - " Reading cross sections = 9.9000E-02 seconds\n", - " Total time in simulation = 1.2109E+01 seconds\n", - " Time in transport only = 1.2098E+01 seconds\n", - " Time in inactive batches = 1.8860E+00 seconds\n", - " Time in active batches = 1.0223E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 3.0000E-03 seconds\n", + " Total time for initialization = 4.0800E-01 seconds\n", + " Reading cross sections = 9.4000E-02 seconds\n", + " Total time in simulation = 2.4001E+01 seconds\n", + " Time in transport only = 2.3960E+01 seconds\n", + " Time in inactive batches = 2.0780E+00 seconds\n", + " Time in active batches = 2.1923E+01 seconds\n", + " Time synchronizing fission bank = 3.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 1.2577E+01 seconds\n", - " Calculation Rate (inactive) = 13255.6 neutrons/second\n", - " Calculation Rate (active) = 9781.86 neutrons/second\n", + " Total time for finalization = 1.0000E-02 seconds\n", + " Total time elapsed = 2.4427E+01 seconds\n", + " Calculation Rate (inactive) = 12030.8 neutrons/second\n", + " Calculation Rate (active) = 4561.42 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1014,13 +1014,14 @@ "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.685185\tres = 0.000E+00\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 1.498E-316\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.728847\tres = 4.513E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.695633\tres = 2.844E-02\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.728846\tres = 4.513E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.695632\tres = 2.844E-02\n", "[ NORMAL ] Iteration 5:\tk_eff = 0.663357\tres = 4.557E-02\n", "[ NORMAL ] Iteration 6:\tk_eff = 0.632339\tres = 4.640E-02\n", "[ NORMAL ] Iteration 7:\tk_eff = 0.604187\tres = 4.676E-02\n", @@ -1043,8 +1044,8 @@ "[ NORMAL ] Iteration 24:\tk_eff = 0.638497\tres = 3.179E-02\n", "[ NORMAL ] Iteration 25:\tk_eff = 0.659105\tres = 3.225E-02\n", "[ NORMAL ] Iteration 26:\tk_eff = 0.680156\tres = 3.228E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.701456\tres = 3.194E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.722831\tres = 3.132E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.701457\tres = 3.194E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.722832\tres = 3.132E-02\n", "[ NORMAL ] Iteration 29:\tk_eff = 0.744127\tres = 3.047E-02\n", "[ NORMAL ] Iteration 30:\tk_eff = 0.765209\tres = 2.946E-02\n", "[ NORMAL ] Iteration 31:\tk_eff = 0.785961\tres = 2.833E-02\n", @@ -1070,79 +1071,79 @@ "[ NORMAL ] Iteration 51:\tk_eff = 1.065399\tres = 7.889E-03\n", "[ NORMAL ] Iteration 52:\tk_eff = 1.072617\tres = 7.313E-03\n", "[ NORMAL ] Iteration 53:\tk_eff = 1.079345\tres = 6.775E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.085609\tres = 6.273E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.091436\tres = 5.804E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.085610\tres = 6.273E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.091437\tres = 5.804E-03\n", "[ NORMAL ] Iteration 56:\tk_eff = 1.096851\tres = 5.367E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.101877\tres = 4.961E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.101878\tres = 4.961E-03\n", "[ NORMAL ] Iteration 58:\tk_eff = 1.106540\tres = 4.583E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.110860\tres = 4.231E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.114861\tres = 3.905E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.118563\tres = 3.602E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.121986\tres = 3.321E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.125149\tres = 3.060E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.128069\tres = 2.819E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.110861\tres = 4.231E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.114862\tres = 3.905E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.118564\tres = 3.602E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.121987\tres = 3.321E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.125150\tres = 3.060E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.128070\tres = 2.819E-03\n", "[ NORMAL ] Iteration 65:\tk_eff = 1.130764\tres = 2.595E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.133248\tres = 2.389E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.135538\tres = 2.197E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.137648\tres = 2.021E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.139590\tres = 1.858E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.141377\tres = 1.707E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.133249\tres = 2.389E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.135539\tres = 2.197E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.137649\tres = 2.021E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.139591\tres = 1.858E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.141378\tres = 1.707E-03\n", "[ NORMAL ] Iteration 71:\tk_eff = 1.143021\tres = 1.568E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.144531\tres = 1.440E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.144532\tres = 1.440E-03\n", "[ NORMAL ] Iteration 73:\tk_eff = 1.145920\tres = 1.322E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.147195\tres = 1.213E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.148365\tres = 1.113E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.147196\tres = 1.213E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.148366\tres = 1.113E-03\n", "[ NORMAL ] Iteration 76:\tk_eff = 1.149440\tres = 1.020E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.150425\tres = 9.356E-04\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.151329\tres = 8.574E-04\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.152157\tres = 7.856E-04\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.152916\tres = 7.196E-04\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.153612\tres = 6.590E-04\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.154249\tres = 6.033E-04\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.154832\tres = 5.522E-04\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.155366\tres = 5.053E-04\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.155855\tres = 4.623E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.156302\tres = 4.229E-04\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.156710\tres = 3.866E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.157084\tres = 3.535E-04\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.157426\tres = 3.230E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.157738\tres = 2.952E-04\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.158023\tres = 2.697E-04\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.158284\tres = 2.464E-04\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.158522\tres = 2.251E-04\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.158739\tres = 2.055E-04\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.158937\tres = 1.876E-04\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.159119\tres = 1.713E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.159284\tres = 1.564E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.159435\tres = 1.428E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.159573\tres = 1.301E-04\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.150426\tres = 9.355E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.151330\tres = 8.574E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.152158\tres = 7.856E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.152918\tres = 7.196E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.153613\tres = 6.590E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.154250\tres = 6.033E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.154833\tres = 5.522E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.155367\tres = 5.053E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.155856\tres = 4.623E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.156303\tres = 4.228E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.156711\tres = 3.866E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.157085\tres = 3.535E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.157427\tres = 3.231E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.157739\tres = 2.952E-04\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.158024\tres = 2.697E-04\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.158285\tres = 2.464E-04\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.158523\tres = 2.251E-04\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.158740\tres = 2.055E-04\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.158939\tres = 1.876E-04\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.159120\tres = 1.713E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.159285\tres = 1.563E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.159436\tres = 1.427E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.159574\tres = 1.302E-04\n", "[ NORMAL ] Iteration 100:\tk_eff = 1.159699\tres = 1.188E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.159813\tres = 1.083E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.159917\tres = 9.880E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.160013\tres = 9.009E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.160100\tres = 8.222E-05\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.160179\tres = 7.487E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.160251\tres = 6.824E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.160317\tres = 6.223E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.160376\tres = 5.675E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.160431\tres = 5.174E-05\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.160481\tres = 4.715E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.160527\tres = 4.298E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.160568\tres = 3.910E-05\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.160605\tres = 3.561E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.160640\tres = 3.242E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.160671\tres = 2.960E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.160699\tres = 2.689E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.160725\tres = 2.452E-05\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.160749\tres = 2.232E-05\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.160770\tres = 2.034E-05\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.160790\tres = 1.855E-05\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.160807\tres = 1.687E-05\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.160824\tres = 1.538E-05\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.160838\tres = 1.399E-05\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.160852\tres = 1.280E-05\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.160864\tres = 1.149E-05\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.160875\tres = 1.061E-05\n" + "[ NORMAL ] Iteration 101:\tk_eff = 1.159814\tres = 1.083E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.159918\tres = 9.880E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.160014\tres = 9.009E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.160101\tres = 8.215E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.160180\tres = 7.490E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.160252\tres = 6.827E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.160318\tres = 6.223E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.160378\tres = 5.672E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.160432\tres = 5.169E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.160482\tres = 4.710E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.160528\tres = 4.291E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.160569\tres = 3.909E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.160607\tres = 3.561E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.160641\tres = 3.244E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.160672\tres = 2.954E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.160700\tres = 2.691E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.160726\tres = 2.450E-05\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.160750\tres = 2.231E-05\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.160771\tres = 2.031E-05\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.160791\tres = 1.849E-05\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.160809\tres = 1.684E-05\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.160825\tres = 1.533E-05\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.160840\tres = 1.395E-05\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.160853\tres = 1.270E-05\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.160865\tres = 1.156E-05\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.160876\tres = 1.052E-05\n" ] } ], @@ -1176,8 +1177,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.161200\n", - "openmoc keff = 1.160875\n", - "bias [pcm]: -32.5\n" + "openmoc keff = 1.160876\n", + "bias [pcm]: -32.4\n" ] } ], @@ -1525,7 +1526,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-13 01:04:11\n", + " Date/Time: 2015-10-15 16:52:53\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1611,20 +1612,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.8500E-01 seconds\n", - " Reading cross sections = 8.8000E-02 seconds\n", - " Total time in simulation = 3.2702E+01 seconds\n", - " Time in transport only = 3.2685E+01 seconds\n", - " Time in inactive batches = 3.3740E+00 seconds\n", - " Time in active batches = 2.9328E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 1.1640E+00 seconds\n", + " Reading cross sections = 2.4900E-01 seconds\n", + " Total time in simulation = 1.2029E+02 seconds\n", + " Time in transport only = 1.2022E+02 seconds\n", + " Time in inactive batches = 1.1199E+01 seconds\n", + " Time in active batches = 1.0909E+02 seconds\n", + " Time synchronizing fission bank = 1.2000E-02 seconds\n", + " Sampling source sites = 6.0000E-03 seconds\n", + " SEND/RECV source sites = 5.0000E-03 seconds\n", " Time accumulating tallies = 2.0000E-03 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 3.3103E+01 seconds\n", - " Calculation Rate (inactive) = 7409.60 neutrons/second\n", - " Calculation Rate (active) = 3409.71 neutrons/second\n", + " Total time for finalization = 2.8000E-02 seconds\n", + " Total time elapsed = 1.2151E+02 seconds\n", + " Calculation Rate (inactive) = 2232.34 neutrons/second\n", + " Calculation Rate (active) = 916.683 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -2012,7 +2013,7 @@ "data": { "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2321,8 +2322,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.227616\n", - "openmoc keff = 1.225325\n", - "bias [pcm]: -229.1\n" + "openmoc keff = 1.225322\n", + "bias [pcm]: -229.3\n" ] } ], @@ -2415,8 +2416,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.227616\n", - "openmoc keff = 1.227096\n", - "bias [pcm]: -52.0\n" + "openmoc keff = 1.227093\n", + "bias [pcm]: -52.3\n" ] } ], diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 0c4c36079..483f9d543 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -373,7 +373,7 @@ class Library(object): def get_condensed_library(self, coarse_groups): """Construct an energy-condensed version of this library. - This routine condense each of the multi-group cross sections in the + This routine condenses each of the multi-group cross sections in the library to a coarse energy group structure. NOTE: This routine must be called after the load_from_statepoint(...) routine loads the tallies from the statepoint into each of the cross sections. @@ -426,6 +426,54 @@ class Library(object): return condensed_library + def get_subdomain_avg_library(self): + """Construct a subdomain-averaged version of this library. + + This routine averages each multi-group cross section across distribcell + instances. The method performs spatial homogenization to compute the + scalar flux-weighted average cross section across the subdomains. + + NOTE: This method is only relevant for distribcell domain types and + simplys returns a deep copy of the library for all other domains types. + + Returns + ------- + Library + A new multi-group cross section library averaged across subdomains + + Raises + ------ + ValueError + When this method is called before a statepoint has been loaded + + See also + -------- + MGXS.get_subdomain_avg_xs(subdomains) + + """ + + if self.statepoint is None: + msg = 'Unable to get a subdomain-averaged cross section ' \ + 'library since the statepoint has not yet been loaded' + raise ValueError(msg) + + # Clone this Library to initialize the subdomain-averaged version + subdomain_avg_library = copy.deepcopy(self) + + if subdomain_avg_library.domain_type == 'distribcell': + subdomain_avg_library.domain_type = 'cell' + else: + return subdomain_avg_library + + # Subdomain average the MGXS for each domain and mgxs type + for domain in self.domains: + for mgxs_type in self.mgxs_types: + mgxs = subdomain_avg_library.get_mgxs(domain, mgxs_type) + avg_mgxs = mgxs.get_subdomain_avg_xs() + subdomain_avg_library.all_mgxs[domain.id][mgxs_type] = avg_mgxs + + return subdomain_avg_library + def build_hdf5_store(self, filename='mgxs', directory='mgxs', subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section library to an HDF5 binary file. From 5b8c683c499f8f5c5e399669cbd3944abb77f1c6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 19 Oct 2015 09:50:09 -0400 Subject: [PATCH 108/130] Added openmc.mgxs.Library.dump_to_file and load_from_file for pickled binary stores --- openmc/mgxs/library.py | 78 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 5 deletions(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 483f9d543..8680e726a 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -1,6 +1,7 @@ import sys import os import copy +import pickle from numbers import Integral from collections import OrderedDict @@ -77,7 +78,7 @@ class Library(object): self._energy_groups = None self._tally_trigger = None self._all_mgxs = OrderedDict() - self._statepoint = None + self._sp_filename = None self.name = name self.openmc_geometry = openmc_geometry @@ -101,7 +102,7 @@ class Library(object): clone._energy_groups = copy.deepcopy(self.energy_groups, memo) clone._tally_trigger = copy.deepcopy(self.tally_trigger, memo) clone._all_mgxs = self.all_mgxs - clone._statepoint = self._statepoint + clone._sp_filename = self._sp_filename clone._all_mgxs = OrderedDict() for domain in self.domains: @@ -172,7 +173,7 @@ class Library(object): @property def statepoint(self): - return self._statepoint + return self._sp_filename @openmc_geometry.setter def openmc_geometry(self, openmc_geometry): @@ -300,7 +301,7 @@ class Library(object): 'linked with a summary file' raise ValueError(msg) - self._statepoint = statepoint + self._sp_filename = statepoint._f.filename # Load tallies for each MGXS for each domain and mgxs type for domain in self.domains: @@ -522,6 +523,9 @@ class Library(object): 'library since a statepoint has not yet been loaded' raise ValueError(msg) + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + import h5py # Make directory if it does not exist @@ -544,4 +548,68 @@ class Library(object): mgxs = mgxs.get_subdomain_avg_xs() mgxs.build_hdf5_store(filename, directory, - xs_type=xs_type, nuclides=nuclides) \ No newline at end of file + xs_type=xs_type, nuclides=nuclides) + + def dump_to_file(self, filename='mgxs', directory='mgxs'): + """Store this Library object in a pickle binary file. + + Parameters + ---------- + filename : str + Filename for the pickle file. Defaults to 'mgxs'. + directory : str + Directory for the pickle file. Defaults to 'mgxs'. + + See also + -------- + Library.load_from_file(filename, directory) + + """ + + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + full_filename = os.path.join(directory, filename + '.pkl') + full_filename = full_filename.replace(' ', '-') + + # Load and return pickled Library object + pickle.dump(self, open(full_filename, 'wb')) + + @staticmethod + def load_from_file(filename='mgxs', directory='mgxs'): + """Load a Library object from a pickle binary file. + + Parameters + ---------- + filename : str + Filename for the pickle file. Defaults to 'mgxs'. + directory : str + Directory for the pickle file. Defaults to 'mgxs'. + + Returns + ------- + Library + A Library object loaded from the pickle binary file + + See also + -------- + Library.dump_to_file(mgxs_lib, filename, directory) + + """ + + cv.check_type('filename', filename, basestring) + cv.check_type('directory', directory, basestring) + + # Make directory if it does not exist + if not os.path.exists(directory): + os.makedirs(directory) + + full_filename = os.path.join(directory, filename + '.pkl') + full_filename = full_filename.replace(' ', '-') + + # Load and return pickled Library object + return pickle.load(open(full_filename, 'rb')) \ No newline at end of file From f72eda7f282f2d79de8466090a6d1bb342a99105 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 19 Oct 2015 10:25:45 -0400 Subject: [PATCH 109/130] The ScatterMatrixXS now optionally creates tallies for P0 transport correction --- openmc/mgxs/library.py | 4 ++++ openmc/mgxs/mgxs.py | 52 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 8680e726a..85cfaad3b 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -244,6 +244,10 @@ class Library(object): if self.tally_trigger: mgxs.tally_trigger = self.tally_trigger + # Specify whether to use a transport ('P0') correction + if isinstance(mgxs, openmc.mgxs.ScatterMatrixXS): + mgxs.correction = self.correction + mgxs.create_tallies() self.all_mgxs[domain.id][mgxs_type] = mgxs diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index d4e368af5..aa2abb0de 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1603,13 +1603,35 @@ class NuScatterXS(MGXS): class ScatterMatrixXS(MGXS): - """A scattering matrix multi-group cross section.""" + """A scattering matrix multi-group cross section. + + Attributes + ---------- + correction : 'P0' or None + Apply the P0 correction to scattering matrices if set to 'P0' + + """ def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): super(ScatterMatrixXS, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'scatter matrix' + self._correction = 'P0' + + def __deepcopy__(self, memo): + clone = super(ScatterMatrixXS, self).__deepcopy__(memo) + clone._correction = self.correction + return clone + + @property + def correction(self): + return self._correction + + @correction.setter + def correction(self, correction): + cv.check_value('correction', correction, ('P0', None)) + self._correction = correction def create_tallies(self): """Construct the OpenMC tallies needed to compute this cross section. @@ -1625,8 +1647,12 @@ class ScatterMatrixXS(MGXS): energyout = openmc.Filter('energyout', group_edges) # Create a list of scores for each Tally to be created - scores = ['flux', 'scatter', 'scatter-P1'] - filters = [[energy], [energy, energyout], [energyout]] + if self.correction == 'P0': + scores = ['flux', 'scatter', 'scatter-P1'] + filters = [[energy], [energy, energyout], [energyout]] + else: + scores = ['flux', 'scatter'] + filters = [[energy], [energy, energyout]] estimator = 'analog' keys = scores @@ -1648,7 +1674,7 @@ class ScatterMatrixXS(MGXS): """ # If using P0 correction subtract scatter-P1 from the diagonal - if correction == 'P0': + if self.correction == 'P0': scatter_p1 = self.tallies['scatter-P1'] scatter_p1 = scatter_p1.get_slice(scores=['scatter-P1']) energy_filter = openmc.Filter(type='energy') @@ -1924,16 +1950,22 @@ class NuScatterMatrixXS(ScatterMatrixXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'nu-scatter', 'scatter-P1'] - estimator = 'analog' - keys = ['flux', 'scatter', 'scatter-P1'] - # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) energyout = openmc.Filter('energyout', group_edges) - filters = [[energy], [energy, energyout], [energyout]] + + # Create a list of scores for each Tally to be created + if self.correction == 'P0': + scores = ['flux', 'nu-scatter', 'scatter-P1'] + estimator = 'analog' + keys = ['flux', 'scatter', 'scatter-P1'] + filters = [[energy], [energy, energyout], [energyout]] + else: + scores = ['flux', 'nu-scatter'] + estimator = 'analog' + keys = ['flux', 'scatter'] + filters = [[energy], [energy, energyout]] # Intialize the Tallies super(ScatterMatrixXS, self).create_tallies(scores, filters, From b92aaf5d10d9f520ae2404b5a211196414f0a112 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 21 Oct 2015 00:28:41 -0400 Subject: [PATCH 110/130] All sorting of materials/cells/universes is now done by ID in Python API --- openmc/geometry.py | 12 +- openmc/mgxs/library.py | 2 +- openmc/mgxs/mgxs.py | 2 +- tests/run_tests.py | 4 +- .../inputs_true.dat | 2 +- .../results_true.dat | 50 +- .../test_mgxs_library_condense.py | 10 +- tests/test_mgxs_library_hdf5/inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/results_true.dat | 169 +- .../test_mgxs_library_hdf5.py | 11 +- .../inputs_true.dat | 2 +- .../results_true.dat | 122 +- .../test_mgxs_library_no_nuclides.py | 6 +- .../inputs_true.dat | 2 +- .../results_true.dat | 1972 ++++++++++++++++- .../test_mgxs_library_nuclides.py | 6 +- tests/testing_harness.py | 6 + 17 files changed, 2350 insertions(+), 30 deletions(-) diff --git a/openmc/geometry.py b/openmc/geometry.py index bb98be2fe..b57ac5623 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -135,7 +135,9 @@ class Geometry(object): for cell in material_cells: materials.add(cell._fill) - return sorted(list(materials)) + materials = list(materials) + materials.sort(key=lambda x: x.id) + return materials def get_all_material_cells(self): all_cells = self.get_all_cells() @@ -145,7 +147,9 @@ class Geometry(object): if cell._type == 'normal': material_cells.add(cell) - return sorted(list(material_cells)) + material_cells = list(material_cells) + material_cells.sort(key=lambda x: x.id) + return material_cells def get_all_material_universes(self): """Return all universes composed of at least one non-fill cell @@ -166,7 +170,9 @@ class Geometry(object): if cell._type == 'normal': material_universes.add(universe) - return sorted(list(material_universes)) + material_universes = list(material_universes) + material_universes.sort(key=lambda x: x.id) + return material_universes class GeometryFile(object): diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 85cfaad3b..0178745ef 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -56,7 +56,7 @@ class Library(object): tally_trigger : Trigger An (optional) tally precision trigger given to each tally used to compute the cross section - all_mgxs : dict + all_mgxs : OrderedDict MGXS objects keyed by domain ID and cross section type statepoint : openmc.StatePoint The statepoint with tally data used to the compute cross sections diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index aa2abb0de..83b85bf50 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -83,7 +83,7 @@ class MGXS(object): tally_trigger : Trigger An (optional) tally precision trigger given to each tally used to compute the cross section - tallies : dict + tallies : OrderedDict OpenMC tallies needed to compute the multi-group cross section xs_tally : Tally Derived tally for the multi-group cross section. This attribute diff --git a/tests/run_tests.py b/tests/run_tests.py index 6974dff33..1377c966c 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -470,8 +470,8 @@ for key in iter(tests): logfilename = os.path.splitext(logfilename)[0] logfilename = logfilename + '_{0}.log'.format(test.name) shutil.copy(logfile[0], logfilename) - - with open(logfilename) as fh: print(fh.read()) + print(logfilename) + with open(logfilename) as fh: print(fh.read()) # Clear build directory and remove binary and hdf5 files shutil.rmtree('build', ignore_errors=True) diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index b40fb91b3..37397c594 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -06e2f794c78d312491a87074b2e725d6f395fc250e004c125b50c1057b725ef1dbf3fd943629fd01b5a26ed018a1292712fc3425c925661ddadbf83194eb66df \ No newline at end of file +35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77 \ 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 9cfa49a26..9549f16c8 100644 --- a/tests/test_mgxs_library_condense/results_true.dat +++ b/tests/test_mgxs_library_condense/results_true.dat @@ -1 +1,49 @@ -a14024dfa41c9b9e90db79574f4d3f9eeeffb1c8c6fd7d26a234bf3fe1c3268316ee9f1de01211583246d0968b148870086469548a7c8ca424b8ff4111db0c8d \ No newline at end of file + material group in nuclide mean std. dev. +0 1 1 total 0.419289 0.01638 material group in nuclide mean std. dev. +0 1 1 total 0.07774 0.003273 material group in group out nuclide mean std. dev. +0 1 1 1 total 0.352665 0.015654 material group out nuclide mean std. dev. +0 1 1 total 1 0.119622 material group in nuclide mean std. dev. +0 2 1 total 0.247316 0.009562 material group in nuclide mean std. dev. +0 2 1 total 0 0 material group in group out nuclide mean std. dev. +0 2 1 1 total 0.244838 0.009996 material group out nuclide mean std. dev. +0 2 1 total 0 0 material group in nuclide mean std. dev. +0 3 1 total 0.409938 0.042262 material group in nuclide mean std. dev. +0 3 1 total 0 0 material group in group out nuclide mean std. dev. +0 3 1 1 total 0.403354 0.041386 material group out nuclide mean std. dev. +0 3 1 total 0 0 material group in nuclide mean std. dev. +0 4 1 total 0.344007 0.05352 material group in nuclide mean std. dev. +0 4 1 total 0 0 material group in group out nuclide mean std. dev. +0 4 1 1 total 0.340438 0.052067 material group out nuclide mean std. dev. +0 4 1 total 0 0 material group in nuclide mean std. dev. +0 5 1 total 0 0 material group in nuclide mean std. dev. +0 5 1 total 0 0 material group in group out nuclide mean std. dev. +0 5 1 1 total 0 0 material group out nuclide mean std. dev. +0 5 1 total 0 0 material group in nuclide mean std. dev. +0 6 1 total 0 0 material group in nuclide mean std. dev. +0 6 1 total 0 0 material group in group out nuclide mean std. dev. +0 6 1 1 total 0 0 material group out nuclide mean std. dev. +0 6 1 total 0 0 material group in nuclide mean std. dev. +0 7 1 total 0 0 material group in nuclide mean std. dev. +0 7 1 total 0 0 material group in group out nuclide mean std. dev. +0 7 1 1 total 0 0 material group out nuclide mean std. dev. +0 7 1 total 0 0 material group in nuclide mean std. dev. +0 8 1 total 0 0 material group in nuclide mean std. dev. +0 8 1 total 0 0 material group in group out nuclide mean std. dev. +0 8 1 1 total 0 0 material group out nuclide mean std. dev. +0 8 1 total 0 0 material group in nuclide mean std. dev. +0 9 1 total 0.751873 0.559701 material group in nuclide mean std. dev. +0 9 1 total 0 0 material group in group out nuclide mean std. dev. +0 9 1 1 total 0.695491 0.50757 material group out nuclide mean std. dev. +0 9 1 total 0 0 material group in nuclide mean std. dev. +0 10 1 total 0 0 material group in nuclide mean std. dev. +0 10 1 total 0 0 material group in group out nuclide mean std. dev. +0 10 1 1 total 0 0 material group out nuclide mean std. dev. +0 10 1 total 0 0 material group in nuclide mean std. dev. +0 11 1 total 0.457329 0.403578 material group in nuclide mean std. dev. +0 11 1 total 0 0 material group in group out nuclide mean std. dev. +0 11 1 1 total 0.446737 0.392775 material group out nuclide mean std. dev. +0 11 1 total 0 0 material group in nuclide mean std. dev. +0 12 1 total 0.574978 0.38864 material group in nuclide mean std. dev. +0 12 1 total 0 0 material group in group out nuclide mean std. dev. +0 12 1 1 total 0.559478 0.377512 material group out nuclide mean std. dev. +0 12 1 total 0 0 \ No newline at end of file diff --git a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py index 8482c4ae3..4c84de2bf 100644 --- a/tests/test_mgxs_library_condense/test_mgxs_library_condense.py +++ b/tests/test_mgxs_library_condense/test_mgxs_library_condense.py @@ -24,7 +24,7 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize MGXS Library for a few cross section types self.mgxs_lib = openmc.mgxs.Library(self._input_set.geometry.geometry) - self.mgxs_lib.by_nuclide = True + self.mgxs_lib.by_nuclide = False self.mgxs_lib.mgxs_types = ['transport', 'nu-fission', 'nu-scatter matrix', 'chi'] self.mgxs_lib.energy_groups = energy_groups @@ -33,10 +33,10 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize a tallies file self._input_set.tallies = openmc.TalliesFile() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() - def _get_results(self, hash_output=True): + def _get_results(self, hash_output=False): """Digest info in the statepoint and return as a string.""" # Read the statepoint file. @@ -57,12 +57,14 @@ class MGXSTestHarness(PyAPITestHarness): # Build a string from Pandas Dataframe for each 1-group MGXS outstr = '' - for domain in sorted(condense_lib.domains): + for domain in condense_lib.domains: for mgxs_type in condense_lib.mgxs_types: mgxs = condense_lib.get_mgxs(domain, mgxs_type) df = mgxs.get_pandas_dataframe() outstr += df.to_string() + print(outstr) + # Hash the results if necessary if hash_output: sha512 = hashlib.sha512() diff --git a/tests/test_mgxs_library_hdf5/inputs_true.dat b/tests/test_mgxs_library_hdf5/inputs_true.dat index fe91376d5..37397c594 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -ff4b31da88312d526bebb8819aaaa75f737b9aaff4660557009c8277c1e8c5f2515d256de9ffc9bdc07bce42719fae27aeb8d0a3d3b61552dd4b1eddd48e6ff2 \ No newline at end of file +35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77 \ 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 62913b363..eec581046 100644 --- a/tests/test_mgxs_library_hdf5/results_true.dat +++ b/tests/test_mgxs_library_hdf5/results_true.dat @@ -1 +1,168 @@ -290551338cc3a6c5fcf965d5f0ee0d14bb68a9fa3f4066bd59c65d2673bf659547be0674961631f5fd03bc06d991ff1dafb974938222a8e87c4d232f1212bd4a \ No newline at end of file +domain=1 type=transport +[ 0.38437891 0.81208747] +[ 0.01648997 0.07418959] +domain=1 type=nu-fission +[ 0.02127008 0.69604034] +[ 0.0008939 0.05345764] +domain=1 type=nu-scatter matrix +[[ 3.49923892e-01 1.73140769e-04] + [ 1.94810926e-03 3.79607212e-01]] +[[ 0.01664928 0.0001732 ] + [ 0.00195193 0.04007819]] +domain=1 type=chi +[ 1. 0.] +[ 0.11962178 0. ] +domain=2 type=transport +[ 0.24504295 0.26645769] +[ 0.00882749 0.05220872] +domain=2 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=2 type=nu-scatter matrix +[[ 0.24365718 0. ] + [ 0. 0.25478661]] +[[ 0.00908307 0. ] + [ 0. 0.05556256]] +domain=2 type=chi +[ 0. 0.] +[ 0. 0.] +domain=3 type=transport +[ 0.28227749 1.42731974] +[ 0.03724175 0.24712746] +domain=3 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=3 type=nu-scatter matrix +[[ 0.25396726 0.02727268] + [ 0. 1.37652669]] +[[ 0.03617307 0.00180698] + [ 0. 0.2402569 ]] +domain=3 type=chi +[ 0. 0.] +[ 0. 0.] +domain=4 type=transport +[ 0.25572316 1.17976682] +[ 0.05191655 0.22938034] +domain=4 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=4 type=nu-scatter matrix +[[ 0.23297756 0.02228141] + [ 0. 1.14680862]] +[[ 0.04977114 0.00262525] + [ 0. 0.22219839]] +domain=4 type=chi +[ 0. 0.] +[ 0. 0.] +domain=5 type=transport +[ 0. 0.] +[ 0. 0.] +domain=5 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=5 type=nu-scatter matrix +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] +domain=5 type=chi +[ 0. 0.] +[ 0. 0.] +domain=6 type=transport +[ 0. 0.] +[ 0. 0.] +domain=6 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=6 type=nu-scatter matrix +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] +domain=6 type=chi +[ 0. 0.] +[ 0. 0.] +domain=7 type=transport +[ 0. 0.] +[ 0. 0.] +domain=7 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=7 type=nu-scatter matrix +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] +domain=7 type=chi +[ 0. 0.] +[ 0. 0.] +domain=8 type=transport +[ 0. 0.] +[ 0. 0.] +domain=8 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=8 type=nu-scatter matrix +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] +domain=8 type=chi +[ 0. 0.] +[ 0. 0.] +domain=9 type=transport +[ 0.50403601 1.68709544] +[ 0.37962374 2.53662237] +domain=9 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=9 type=nu-scatter matrix +[[ 0.50403601 0. ] + [ 0. 1.41795483]] +[[ 0.37962374 0. ] + [ 0. 2.15802716]] +domain=9 type=chi +[ 0. 0.] +[ 0. 0.] +domain=10 type=transport +[ 0. 0.] +[ 0. 0.] +domain=10 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=10 type=nu-scatter matrix +[[ 0. 0.] + [ 0. 0.]] +[[ 0. 0.] + [ 0. 0.]] +domain=10 type=chi +[ 0. 0.] +[ 0. 0.] +domain=11 type=transport +[ 0.30282618 1.00614519] +[ 0.40131081 1.09163785] +domain=11 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=11 type=nu-scatter matrix +[[ 0.27567871 0.02714747] + [ 0. 0.95792921]] +[[ 0.38567601 0.02000859] + [ 0. 1.05195936]] +domain=11 type=chi +[ 0. 0.] +[ 0. 0.] +domain=12 type=transport +[ 0.25593293 1.11334475] +[ 0.26842571 0.98867569] +domain=12 type=nu-fission +[ 0. 0.] +[ 0. 0.] +domain=12 type=nu-scatter matrix +[[ 0.22631045 0.02962248] + [ 0. 1.07168976]] +[[ 0.25487194 0.0177599 ] + [ 0. 0.95829029]] +domain=12 type=chi +[ 0. 0.] +[ 0. 0.] diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index 26f4154a8..c54be05e9 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -34,10 +34,10 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize a tallies file self._input_set.tallies = openmc.TalliesFile() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() - def _get_results(self, hash_output=True): + def _get_results(self, hash_output=False): """Digest info in the statepoint and return as a string.""" # Read the statepoint file. @@ -60,12 +60,13 @@ class MGXSTestHarness(PyAPITestHarness): # Build a string from the datasets in the HDF5 file outstr = '' - for domain in sorted(self.mgxs_lib.domains): + for domain in self.mgxs_lib.domains: for mgxs_type in self.mgxs_lib.mgxs_types: + outstr += 'domain={0} type={1}\n'.format(domain.id, mgxs_type) key = 'material/{0}/{1}/average'.format(domain.id, mgxs_type) - outstr += str(f[key]) + outstr += str(f[key][...]) + '\n' key = 'material/{0}/{1}/std. dev.'.format(domain.id, mgxs_type) - outstr += str(f[key]) + outstr += str(f[key][...]) + '\n' # Close the MGXS HDF5 file f.close() diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index fe91376d5..37397c594 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -ff4b31da88312d526bebb8819aaaa75f737b9aaff4660557009c8277c1e8c5f2515d256de9ffc9bdc07bce42719fae27aeb8d0a3d3b61552dd4b1eddd48e6ff2 \ No newline at end of file +35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77 \ 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 54b73efb3..bbcb28375 100644 --- a/tests/test_mgxs_library_no_nuclides/results_true.dat +++ b/tests/test_mgxs_library_no_nuclides/results_true.dat @@ -1 +1,121 @@ -f882fc13affc45ed4ce833c17b719c10a371b3c086022a846014e0ce46337971850d55c7634a9bfc740709c696aef8ec9cdad19253f62aeb77af6baed35f9fda \ No newline at end of file + material group in nuclide mean std. dev. +1 1 1 total 0.384379 0.01649 +0 1 2 total 0.812087 0.07419 material group in nuclide mean std. dev. +1 1 1 total 0.02127 0.000894 +0 1 2 total 0.69604 0.053458 material group in group out nuclide mean std. dev. +3 1 1 1 total 0.349924 0.016649 +2 1 1 2 total 0.000173 0.000173 +1 1 2 1 total 0.001948 0.001952 +0 1 2 2 total 0.379607 0.040078 material group out nuclide mean std. dev. +1 1 1 total 1 0.119622 +0 1 2 total 0 0.000000 material group in nuclide mean std. dev. +1 2 1 total 0.245043 0.008827 +0 2 2 total 0.266458 0.052209 material group in nuclide mean std. dev. +1 2 1 total 0 0 +0 2 2 total 0 0 material group in group out nuclide mean std. dev. +3 2 1 1 total 0.243657 0.009083 +2 2 1 2 total 0.000000 0.000000 +1 2 2 1 total 0.000000 0.000000 +0 2 2 2 total 0.254787 0.055563 material group out nuclide mean std. dev. +1 2 1 total 0 0 +0 2 2 total 0 0 material group in nuclide mean std. dev. +1 3 1 total 0.282277 0.037242 +0 3 2 total 1.427320 0.247127 material group in nuclide mean std. dev. +1 3 1 total 0 0 +0 3 2 total 0 0 material group in group out nuclide mean std. dev. +3 3 1 1 total 0.253967 0.036173 +2 3 1 2 total 0.027273 0.001807 +1 3 2 1 total 0.000000 0.000000 +0 3 2 2 total 1.376527 0.240257 material group out nuclide mean std. dev. +1 3 1 total 0 0 +0 3 2 total 0 0 material group in nuclide mean std. dev. +1 4 1 total 0.255723 0.051917 +0 4 2 total 1.179767 0.229380 material group in nuclide mean std. dev. +1 4 1 total 0 0 +0 4 2 total 0 0 material group in group out nuclide mean std. dev. +3 4 1 1 total 0.232978 0.049771 +2 4 1 2 total 0.022281 0.002625 +1 4 2 1 total 0.000000 0.000000 +0 4 2 2 total 1.146809 0.222198 material group out nuclide mean std. dev. +1 4 1 total 0 0 +0 4 2 total 0 0 material group in nuclide mean std. dev. +1 5 1 total 0 0 +0 5 2 total 0 0 material group in nuclide mean std. dev. +1 5 1 total 0 0 +0 5 2 total 0 0 material group in group out nuclide mean std. dev. +3 5 1 1 total 0 0 +2 5 1 2 total 0 0 +1 5 2 1 total 0 0 +0 5 2 2 total 0 0 material group out nuclide mean std. dev. +1 5 1 total 0 0 +0 5 2 total 0 0 material group in nuclide mean std. dev. +1 6 1 total 0 0 +0 6 2 total 0 0 material group in nuclide mean std. dev. +1 6 1 total 0 0 +0 6 2 total 0 0 material group in group out nuclide mean std. dev. +3 6 1 1 total 0 0 +2 6 1 2 total 0 0 +1 6 2 1 total 0 0 +0 6 2 2 total 0 0 material group out nuclide mean std. dev. +1 6 1 total 0 0 +0 6 2 total 0 0 material group in nuclide mean std. dev. +1 7 1 total 0 0 +0 7 2 total 0 0 material group in nuclide mean std. dev. +1 7 1 total 0 0 +0 7 2 total 0 0 material group in group out nuclide mean std. dev. +3 7 1 1 total 0 0 +2 7 1 2 total 0 0 +1 7 2 1 total 0 0 +0 7 2 2 total 0 0 material group out nuclide mean std. dev. +1 7 1 total 0 0 +0 7 2 total 0 0 material group in nuclide mean std. dev. +1 8 1 total 0 0 +0 8 2 total 0 0 material group in nuclide mean std. dev. +1 8 1 total 0 0 +0 8 2 total 0 0 material group in group out nuclide mean std. dev. +3 8 1 1 total 0 0 +2 8 1 2 total 0 0 +1 8 2 1 total 0 0 +0 8 2 2 total 0 0 material group out nuclide mean std. dev. +1 8 1 total 0 0 +0 8 2 total 0 0 material group in nuclide mean std. dev. +1 9 1 total 0.504036 0.379624 +0 9 2 total 1.687095 2.536622 material group in nuclide mean std. dev. +1 9 1 total 0 0 +0 9 2 total 0 0 material group in group out nuclide mean std. dev. +3 9 1 1 total 0.504036 0.379624 +2 9 1 2 total 0.000000 0.000000 +1 9 2 1 total 0.000000 0.000000 +0 9 2 2 total 1.417955 2.158027 material group out nuclide mean std. dev. +1 9 1 total 0 0 +0 9 2 total 0 0 material group in nuclide mean std. dev. +1 10 1 total 0 0 +0 10 2 total 0 0 material group in nuclide mean std. dev. +1 10 1 total 0 0 +0 10 2 total 0 0 material group in group out nuclide mean std. dev. +3 10 1 1 total 0 0 +2 10 1 2 total 0 0 +1 10 2 1 total 0 0 +0 10 2 2 total 0 0 material group out nuclide mean std. dev. +1 10 1 total 0 0 +0 10 2 total 0 0 material group in nuclide mean std. dev. +1 11 1 total 0.302826 0.401311 +0 11 2 total 1.006145 1.091638 material group in nuclide mean std. dev. +1 11 1 total 0 0 +0 11 2 total 0 0 material group in group out nuclide mean std. dev. +3 11 1 1 total 0.275679 0.385676 +2 11 1 2 total 0.027147 0.020009 +1 11 2 1 total 0.000000 0.000000 +0 11 2 2 total 0.957929 1.051959 material group out nuclide mean std. dev. +1 11 1 total 0 0 +0 11 2 total 0 0 material group in nuclide mean std. dev. +1 12 1 total 0.255933 0.268426 +0 12 2 total 1.113345 0.988676 material group in nuclide mean std. dev. +1 12 1 total 0 0 +0 12 2 total 0 0 material group in group out nuclide mean std. dev. +3 12 1 1 total 0.226310 0.254872 +2 12 1 2 total 0.029622 0.017760 +1 12 2 1 total 0.000000 0.000000 +0 12 2 2 total 1.071690 0.958290 material group out nuclide mean std. dev. +1 12 1 total 0 0 +0 12 2 total 0 0 \ No newline at end of file diff --git a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py index 5fe44f952..2afa9039e 100644 --- a/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py +++ b/tests/test_mgxs_library_no_nuclides/test_mgxs_library_no_nuclides.py @@ -33,10 +33,10 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize a tallies file self._input_set.tallies = openmc.TalliesFile() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() - def _get_results(self, hash_output=True): + def _get_results(self, hash_output=False): """Digest info in the statepoint and return as a string.""" # Read the statepoint file. @@ -53,7 +53,7 @@ class MGXSTestHarness(PyAPITestHarness): # Build a string from Pandas Dataframe for each MGXS outstr = '' - for domain in sorted(self.mgxs_lib.domains): + for domain in self.mgxs_lib.domains: for mgxs_type in self.mgxs_lib.mgxs_types: mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) df = mgxs.get_pandas_dataframe() diff --git a/tests/test_mgxs_library_nuclides/inputs_true.dat b/tests/test_mgxs_library_nuclides/inputs_true.dat index b40fb91b3..2e299773a 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -06e2f794c78d312491a87074b2e725d6f395fc250e004c125b50c1057b725ef1dbf3fd943629fd01b5a26ed018a1292712fc3425c925661ddadbf83194eb66df \ No newline at end of file +7c1deb8a54fbe1a1ce6ef27cea4a11995210ad3e5ecf32bd83d7c80041edf0793378a7325ffe7ebf9c537e9c278fd4545642fec6c1e46b9c5418118f035d5e95 \ 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 278e7da84..f8e5baac5 100644 --- a/tests/test_mgxs_library_nuclides/results_true.dat +++ b/tests/test_mgxs_library_nuclides/results_true.dat @@ -1 +1,1971 @@ -2c3d1524788449afd2124a9cfa9e6032077598639bddfa4d5e5c48962e789ca133e537b7207e200a79a6d01dc703b6f43f4ba4916323aab90c9ccaf335c640f1 \ No newline at end of file + material group in nuclide mean std. dev. +34 1 1 U-234 0.000000 0.000000 +35 1 1 U-235 0.008559 0.001742 +36 1 1 U-236 0.002643 0.000794 +37 1 1 U-238 0.213622 0.010911 +38 1 1 Np-237 0.000000 0.000000 +39 1 1 Pu-238 0.000000 0.000000 +40 1 1 Pu-239 0.005787 0.001050 +41 1 1 Pu-240 0.005702 0.000850 +42 1 1 Pu-241 0.000869 0.000366 +43 1 1 Pu-242 0.000655 0.000537 +44 1 1 Am-241 0.000000 0.000000 +45 1 1 Am-242m 0.000000 0.000000 +46 1 1 Am-243 0.000000 0.000000 +47 1 1 Cm-242 0.000000 0.000000 +48 1 1 Cm-243 0.000000 0.000000 +49 1 1 Cm-244 0.000000 0.000000 +50 1 1 Cm-245 0.000000 0.000000 +51 1 1 Mo-95 0.000302 0.000216 +52 1 1 Tc-99 0.000782 0.000434 +53 1 1 Ru-101 0.000346 0.000212 +54 1 1 Ru-103 0.000000 0.000000 +55 1 1 Ag-109 0.000000 0.000000 +56 1 1 Xe-135 0.000000 0.000000 +57 1 1 Cs-133 0.000189 0.000264 +58 1 1 Nd-143 0.000721 0.000364 +59 1 1 Nd-145 0.000637 0.000253 +60 1 1 Sm-147 0.000009 0.000238 +61 1 1 Sm-149 0.000000 0.000000 +62 1 1 Sm-150 0.000003 0.000243 +63 1 1 Sm-151 0.000000 0.000000 +64 1 1 Sm-152 0.000874 0.000388 +65 1 1 Eu-153 0.000173 0.000173 +66 1 1 Gd-155 0.000000 0.000000 +67 1 1 O-16 0.142506 0.008222 +0 1 2 U-234 0.001948 0.001952 +1 1 2 U-235 0.179956 0.028209 +2 1 2 U-236 0.000000 0.000000 +3 1 2 U-238 0.239279 0.039048 +4 1 2 Np-237 0.000000 0.000000 +5 1 2 Pu-238 0.000000 0.000000 +6 1 2 Pu-239 0.159745 0.015751 +7 1 2 Pu-240 0.007792 0.003677 +8 1 2 Pu-241 0.017533 0.003806 +9 1 2 Pu-242 0.000000 0.000000 +10 1 2 Am-241 0.000000 0.000000 +11 1 2 Am-242m 0.000000 0.000000 +12 1 2 Am-243 0.000000 0.000000 +13 1 2 Cm-242 0.000000 0.000000 +14 1 2 Cm-243 0.000000 0.000000 +15 1 2 Cm-244 0.000000 0.000000 +16 1 2 Cm-245 0.000000 0.000000 +17 1 2 Mo-95 0.002250 0.004232 +18 1 2 Tc-99 0.003544 0.002528 +19 1 2 Ru-101 0.000000 0.000000 +20 1 2 Ru-103 0.000000 0.000000 +21 1 2 Ag-109 0.000000 0.000000 +22 1 2 Xe-135 0.027274 0.004025 +23 1 2 Cs-133 0.000000 0.000000 +24 1 2 Nd-143 0.006532 0.002517 +25 1 2 Nd-145 0.001948 0.001952 +26 1 2 Sm-147 0.000000 0.000000 +27 1 2 Sm-149 0.007792 0.005701 +28 1 2 Sm-150 0.000000 0.000000 +29 1 2 Sm-151 0.000000 0.000000 +30 1 2 Sm-152 0.000000 0.000000 +31 1 2 Eu-153 0.001686 0.001968 +32 1 2 Gd-155 0.000000 0.000000 +33 1 2 O-16 0.154807 0.023798 material group in nuclide mean std. dev. +34 1 1 U-234 6.771527e-06 2.982583e-07 +35 1 1 U-235 9.687933e-03 4.305720e-04 +36 1 1 U-236 6.279974e-05 3.653120e-06 +37 1 1 U-238 6.335930e-03 4.715525e-04 +38 1 1 Np-237 1.237030e-05 6.333955e-07 +39 1 1 Pu-238 7.369063e-06 5.017525e-07 +40 1 1 Pu-239 4.007893e-03 2.607619e-04 +41 1 1 Pu-240 6.479096e-05 3.728060e-06 +42 1 1 Pu-241 1.074454e-03 4.688479e-05 +43 1 1 Pu-242 5.512610e-06 2.976651e-07 +44 1 1 Am-241 1.088373e-06 8.489934e-08 +45 1 1 Am-242m 1.143307e-06 9.912400e-08 +46 1 1 Am-243 7.745526e-07 5.413923e-08 +47 1 1 Cm-242 4.311566e-07 1.922427e-08 +48 1 1 Cm-243 2.363328e-07 2.235666e-08 +49 1 1 Cm-244 2.840125e-07 2.412051e-08 +50 1 1 Cm-245 3.017505e-07 1.594090e-08 +51 1 1 Mo-95 0.000000e+00 0.000000e+00 +52 1 1 Tc-99 0.000000e+00 0.000000e+00 +53 1 1 Ru-101 0.000000e+00 0.000000e+00 +54 1 1 Ru-103 0.000000e+00 0.000000e+00 +55 1 1 Ag-109 0.000000e+00 0.000000e+00 +56 1 1 Xe-135 0.000000e+00 0.000000e+00 +57 1 1 Cs-133 0.000000e+00 0.000000e+00 +58 1 1 Nd-143 0.000000e+00 0.000000e+00 +59 1 1 Nd-145 0.000000e+00 0.000000e+00 +60 1 1 Sm-147 0.000000e+00 0.000000e+00 +61 1 1 Sm-149 0.000000e+00 0.000000e+00 +62 1 1 Sm-150 0.000000e+00 0.000000e+00 +63 1 1 Sm-151 0.000000e+00 0.000000e+00 +64 1 1 Sm-152 0.000000e+00 0.000000e+00 +65 1 1 Eu-153 0.000000e+00 0.000000e+00 +66 1 1 Gd-155 0.000000e+00 0.000000e+00 +67 1 1 O-16 0.000000e+00 0.000000e+00 +0 1 2 U-234 4.267300e-07 3.529845e-08 +1 1 2 U-235 3.629246e-01 2.964548e-02 +2 1 2 U-236 5.921657e-06 4.881464e-07 +3 1 2 U-238 5.196256e-07 4.286610e-08 +4 1 2 Np-237 2.424211e-07 1.741823e-08 +5 1 2 Pu-238 3.255627e-05 2.692686e-06 +6 1 2 Pu-239 2.868384e-01 2.056896e-02 +7 1 2 Pu-240 4.398266e-06 3.658267e-07 +8 1 2 Pu-241 4.607239e-02 3.797176e-03 +9 1 2 Pu-242 8.451967e-08 6.979002e-09 +10 1 2 Am-241 4.678607e-06 3.253889e-07 +11 1 2 Am-242m 1.417675e-04 1.218350e-05 +12 1 2 Am-243 7.648834e-08 6.303843e-09 +13 1 2 Cm-242 9.433314e-07 7.794362e-08 +14 1 2 Cm-243 1.767995e-06 1.454123e-07 +15 1 2 Cm-244 1.533962e-07 1.266951e-08 +16 1 2 Cm-245 1.145063e-05 9.419051e-07 +17 1 2 Mo-95 0.000000e+00 0.000000e+00 +18 1 2 Tc-99 0.000000e+00 0.000000e+00 +19 1 2 Ru-101 0.000000e+00 0.000000e+00 +20 1 2 Ru-103 0.000000e+00 0.000000e+00 +21 1 2 Ag-109 0.000000e+00 0.000000e+00 +22 1 2 Xe-135 0.000000e+00 0.000000e+00 +23 1 2 Cs-133 0.000000e+00 0.000000e+00 +24 1 2 Nd-143 0.000000e+00 0.000000e+00 +25 1 2 Nd-145 0.000000e+00 0.000000e+00 +26 1 2 Sm-147 0.000000e+00 0.000000e+00 +27 1 2 Sm-149 0.000000e+00 0.000000e+00 +28 1 2 Sm-150 0.000000e+00 0.000000e+00 +29 1 2 Sm-151 0.000000e+00 0.000000e+00 +30 1 2 Sm-152 0.000000e+00 0.000000e+00 +31 1 2 Eu-153 0.000000e+00 0.000000e+00 +32 1 2 Gd-155 0.000000e+00 0.000000e+00 +33 1 2 O-16 0.000000e+00 0.000000e+00 material group in group out nuclide mean std. dev. +102 1 1 1 U-234 0.000000 0.000000 +103 1 1 1 U-235 0.002846 0.001185 +104 1 1 1 U-236 0.001951 0.000829 +105 1 1 1 U-238 0.197520 0.011618 +106 1 1 1 Np-237 0.000000 0.000000 +107 1 1 1 Pu-238 0.000000 0.000000 +108 1 1 1 Pu-239 0.001285 0.000461 +109 1 1 1 Pu-240 0.001027 0.000635 +110 1 1 1 Pu-241 0.000004 0.000242 +111 1 1 1 Pu-242 0.000481 0.000372 +112 1 1 1 Am-241 0.000000 0.000000 +113 1 1 1 Am-242m 0.000000 0.000000 +114 1 1 1 Am-243 0.000000 0.000000 +115 1 1 1 Cm-242 0.000000 0.000000 +116 1 1 1 Cm-243 0.000000 0.000000 +117 1 1 1 Cm-244 0.000000 0.000000 +118 1 1 1 Cm-245 0.000000 0.000000 +119 1 1 1 Mo-95 0.000302 0.000216 +120 1 1 1 Tc-99 0.000262 0.000195 +121 1 1 1 Ru-101 0.000000 0.000000 +122 1 1 1 Ru-103 0.000000 0.000000 +123 1 1 1 Ag-109 0.000000 0.000000 +124 1 1 1 Xe-135 0.000000 0.000000 +125 1 1 1 Cs-133 0.000016 0.000234 +126 1 1 1 Nd-143 0.000721 0.000364 +127 1 1 1 Nd-145 0.000463 0.000281 +128 1 1 1 Sm-147 0.000009 0.000238 +129 1 1 1 Sm-149 0.000000 0.000000 +130 1 1 1 Sm-150 0.000003 0.000243 +131 1 1 1 Sm-151 0.000000 0.000000 +132 1 1 1 Sm-152 0.000700 0.000424 +133 1 1 1 Eu-153 0.000000 0.000000 +134 1 1 1 Gd-155 0.000000 0.000000 +135 1 1 1 O-16 0.142333 0.008156 +68 1 1 2 U-234 0.000000 0.000000 +69 1 1 2 U-235 0.000000 0.000000 +70 1 1 2 U-236 0.000000 0.000000 +71 1 1 2 U-238 0.000000 0.000000 +72 1 1 2 Np-237 0.000000 0.000000 +73 1 1 2 Pu-238 0.000000 0.000000 +74 1 1 2 Pu-239 0.000000 0.000000 +75 1 1 2 Pu-240 0.000000 0.000000 +76 1 1 2 Pu-241 0.000000 0.000000 +77 1 1 2 Pu-242 0.000000 0.000000 +78 1 1 2 Am-241 0.000000 0.000000 +79 1 1 2 Am-242m 0.000000 0.000000 +80 1 1 2 Am-243 0.000000 0.000000 +81 1 1 2 Cm-242 0.000000 0.000000 +82 1 1 2 Cm-243 0.000000 0.000000 +83 1 1 2 Cm-244 0.000000 0.000000 +84 1 1 2 Cm-245 0.000000 0.000000 +85 1 1 2 Mo-95 0.000000 0.000000 +86 1 1 2 Tc-99 0.000000 0.000000 +87 1 1 2 Ru-101 0.000000 0.000000 +88 1 1 2 Ru-103 0.000000 0.000000 +89 1 1 2 Ag-109 0.000000 0.000000 +90 1 1 2 Xe-135 0.000000 0.000000 +91 1 1 2 Cs-133 0.000000 0.000000 +92 1 1 2 Nd-143 0.000000 0.000000 +93 1 1 2 Nd-145 0.000000 0.000000 +94 1 1 2 Sm-147 0.000000 0.000000 +95 1 1 2 Sm-149 0.000000 0.000000 +96 1 1 2 Sm-150 0.000000 0.000000 +97 1 1 2 Sm-151 0.000000 0.000000 +98 1 1 2 Sm-152 0.000000 0.000000 +99 1 1 2 Eu-153 0.000000 0.000000 +100 1 1 2 Gd-155 0.000000 0.000000 +101 1 1 2 O-16 0.000173 0.000173 +34 1 2 1 U-234 0.000000 0.000000 +35 1 2 1 U-235 0.000000 0.000000 +36 1 2 1 U-236 0.000000 0.000000 +37 1 2 1 U-238 0.000000 0.000000 +38 1 2 1 Np-237 0.000000 0.000000 +39 1 2 1 Pu-238 0.000000 0.000000 +40 1 2 1 Pu-239 0.000000 0.000000 +41 1 2 1 Pu-240 0.000000 0.000000 +42 1 2 1 Pu-241 0.000000 0.000000 +43 1 2 1 Pu-242 0.000000 0.000000 +44 1 2 1 Am-241 0.000000 0.000000 +45 1 2 1 Am-242m 0.000000 0.000000 +46 1 2 1 Am-243 0.000000 0.000000 +47 1 2 1 Cm-242 0.000000 0.000000 +48 1 2 1 Cm-243 0.000000 0.000000 +49 1 2 1 Cm-244 0.000000 0.000000 +50 1 2 1 Cm-245 0.000000 0.000000 +51 1 2 1 Mo-95 0.000000 0.000000 +52 1 2 1 Tc-99 0.000000 0.000000 +53 1 2 1 Ru-101 0.000000 0.000000 +54 1 2 1 Ru-103 0.000000 0.000000 +55 1 2 1 Ag-109 0.000000 0.000000 +56 1 2 1 Xe-135 0.000000 0.000000 +57 1 2 1 Cs-133 0.000000 0.000000 +58 1 2 1 Nd-143 0.000000 0.000000 +59 1 2 1 Nd-145 0.000000 0.000000 +60 1 2 1 Sm-147 0.000000 0.000000 +61 1 2 1 Sm-149 0.000000 0.000000 +62 1 2 1 Sm-150 0.000000 0.000000 +63 1 2 1 Sm-151 0.000000 0.000000 +64 1 2 1 Sm-152 0.000000 0.000000 +65 1 2 1 Eu-153 0.000000 0.000000 +66 1 2 1 Gd-155 0.000000 0.000000 +67 1 2 1 O-16 0.001948 0.001952 +0 1 2 2 U-234 0.000000 0.000000 +1 1 2 2 U-235 0.010470 0.006106 +2 1 2 2 U-236 0.000000 0.000000 +3 1 2 2 U-238 0.208109 0.039197 +4 1 2 2 Np-237 0.000000 0.000000 +5 1 2 2 Pu-238 0.000000 0.000000 +6 1 2 2 Pu-239 0.000000 0.000000 +7 1 2 2 Pu-240 0.000000 0.000000 +8 1 2 2 Pu-241 0.000000 0.000000 +9 1 2 2 Pu-242 0.000000 0.000000 +10 1 2 2 Am-241 0.000000 0.000000 +11 1 2 2 Am-242m 0.000000 0.000000 +12 1 2 2 Am-243 0.000000 0.000000 +13 1 2 2 Cm-242 0.000000 0.000000 +14 1 2 2 Cm-243 0.000000 0.000000 +15 1 2 2 Cm-244 0.000000 0.000000 +16 1 2 2 Cm-245 0.000000 0.000000 +17 1 2 2 Mo-95 0.000302 0.002551 +18 1 2 2 Tc-99 0.003544 0.002528 +19 1 2 2 Ru-101 0.000000 0.000000 +20 1 2 2 Ru-103 0.000000 0.000000 +21 1 2 2 Ag-109 0.000000 0.000000 +22 1 2 2 Xe-135 0.000000 0.000000 +23 1 2 2 Cs-133 0.000000 0.000000 +24 1 2 2 Nd-143 0.002636 0.002073 +25 1 2 2 Nd-145 0.000000 0.000000 +26 1 2 2 Sm-147 0.000000 0.000000 +27 1 2 2 Sm-149 0.000000 0.000000 +28 1 2 2 Sm-150 0.000000 0.000000 +29 1 2 2 Sm-151 0.000000 0.000000 +30 1 2 2 Sm-152 0.000000 0.000000 +31 1 2 2 Eu-153 0.001686 0.001968 +32 1 2 2 Gd-155 0.000000 0.000000 +33 1 2 2 O-16 0.152859 0.022894 material group out nuclide mean std. dev. +34 1 1 U-234 0 0.000000 +35 1 1 U-235 1 0.127079 +36 1 1 U-236 0 0.000000 +37 1 1 U-238 1 0.153215 +38 1 1 Np-237 0 0.000000 +39 1 1 Pu-238 0 0.000000 +40 1 1 Pu-239 1 0.150979 +41 1 1 Pu-240 0 0.000000 +42 1 1 Pu-241 1 0.203534 +43 1 1 Pu-242 0 0.000000 +44 1 1 Am-241 0 0.000000 +45 1 1 Am-242m 0 0.000000 +46 1 1 Am-243 0 0.000000 +47 1 1 Cm-242 0 0.000000 +48 1 1 Cm-243 0 0.000000 +49 1 1 Cm-244 0 0.000000 +50 1 1 Cm-245 0 0.000000 +51 1 1 Mo-95 0 0.000000 +52 1 1 Tc-99 0 0.000000 +53 1 1 Ru-101 0 0.000000 +54 1 1 Ru-103 0 0.000000 +55 1 1 Ag-109 0 0.000000 +56 1 1 Xe-135 0 0.000000 +57 1 1 Cs-133 0 0.000000 +58 1 1 Nd-143 0 0.000000 +59 1 1 Nd-145 0 0.000000 +60 1 1 Sm-147 0 0.000000 +61 1 1 Sm-149 0 0.000000 +62 1 1 Sm-150 0 0.000000 +63 1 1 Sm-151 0 0.000000 +64 1 1 Sm-152 0 0.000000 +65 1 1 Eu-153 0 0.000000 +66 1 1 Gd-155 0 0.000000 +67 1 1 O-16 0 0.000000 +0 1 2 U-234 0 0.000000 +1 1 2 U-235 0 0.000000 +2 1 2 U-236 0 0.000000 +3 1 2 U-238 0 0.000000 +4 1 2 Np-237 0 0.000000 +5 1 2 Pu-238 0 0.000000 +6 1 2 Pu-239 0 0.000000 +7 1 2 Pu-240 0 0.000000 +8 1 2 Pu-241 0 0.000000 +9 1 2 Pu-242 0 0.000000 +10 1 2 Am-241 0 0.000000 +11 1 2 Am-242m 0 0.000000 +12 1 2 Am-243 0 0.000000 +13 1 2 Cm-242 0 0.000000 +14 1 2 Cm-243 0 0.000000 +15 1 2 Cm-244 0 0.000000 +16 1 2 Cm-245 0 0.000000 +17 1 2 Mo-95 0 0.000000 +18 1 2 Tc-99 0 0.000000 +19 1 2 Ru-101 0 0.000000 +20 1 2 Ru-103 0 0.000000 +21 1 2 Ag-109 0 0.000000 +22 1 2 Xe-135 0 0.000000 +23 1 2 Cs-133 0 0.000000 +24 1 2 Nd-143 0 0.000000 +25 1 2 Nd-145 0 0.000000 +26 1 2 Sm-147 0 0.000000 +27 1 2 Sm-149 0 0.000000 +28 1 2 Sm-150 0 0.000000 +29 1 2 Sm-151 0 0.000000 +30 1 2 Sm-152 0 0.000000 +31 1 2 Eu-153 0 0.000000 +32 1 2 Gd-155 0 0.000000 +33 1 2 O-16 0 0.000000 material group in nuclide mean std. dev. +5 2 1 Zr-90 0.118578 0.008347 +6 2 1 Zr-91 0.040887 0.002988 +7 2 1 Zr-92 0.033882 0.004365 +8 2 1 Zr-94 0.046281 0.005422 +9 2 1 Zr-96 0.005415 0.002113 +0 2 2 Zr-90 0.122479 0.032627 +1 2 2 Zr-91 0.035669 0.009683 +2 2 2 Zr-92 0.049331 0.021936 +3 2 2 Zr-94 0.058978 0.020081 +4 2 2 Zr-96 0.000000 0.000000 material group in nuclide mean std. dev. +5 2 1 Zr-90 0 0 +6 2 1 Zr-91 0 0 +7 2 1 Zr-92 0 0 +8 2 1 Zr-94 0 0 +9 2 1 Zr-96 0 0 +0 2 2 Zr-90 0 0 +1 2 2 Zr-91 0 0 +2 2 2 Zr-92 0 0 +3 2 2 Zr-94 0 0 +4 2 2 Zr-96 0 0 material group in group out nuclide mean std. dev. +15 2 1 1 Zr-90 0.118578 0.008347 +16 2 1 1 Zr-91 0.039963 0.003053 +17 2 1 1 Zr-92 0.033882 0.004365 +18 2 1 1 Zr-94 0.046281 0.005422 +19 2 1 1 Zr-96 0.004953 0.002087 +10 2 1 2 Zr-90 0.000000 0.000000 +11 2 1 2 Zr-91 0.000000 0.000000 +12 2 1 2 Zr-92 0.000000 0.000000 +13 2 1 2 Zr-94 0.000000 0.000000 +14 2 1 2 Zr-96 0.000000 0.000000 +5 2 2 1 Zr-90 0.000000 0.000000 +6 2 2 1 Zr-91 0.000000 0.000000 +7 2 2 1 Zr-92 0.000000 0.000000 +8 2 2 1 Zr-94 0.000000 0.000000 +9 2 2 1 Zr-96 0.000000 0.000000 +0 2 2 2 Zr-90 0.122479 0.032627 +1 2 2 2 Zr-91 0.023998 0.011915 +2 2 2 2 Zr-92 0.049331 0.021936 +3 2 2 2 Zr-94 0.058978 0.020081 +4 2 2 2 Zr-96 0.000000 0.000000 material group out nuclide mean std. dev. +5 2 1 Zr-90 0 0 +6 2 1 Zr-91 0 0 +7 2 1 Zr-92 0 0 +8 2 1 Zr-94 0 0 +9 2 1 Zr-96 0 0 +0 2 2 Zr-90 0 0 +1 2 2 Zr-91 0 0 +2 2 2 Zr-92 0 0 +3 2 2 Zr-94 0 0 +4 2 2 Zr-96 0 0 material group in nuclide mean std. dev. +4 3 1 H-1 0.206179 0.034791 +5 3 1 O-16 0.075190 0.004750 +6 3 1 B-10 0.000741 0.000470 +7 3 1 B-11 0.000167 0.000208 +0 3 2 H-1 1.323003 0.239067 +1 3 2 O-16 0.071243 0.013291 +2 3 2 B-10 0.033075 0.004283 +3 3 2 B-11 0.000000 0.000000 material group in nuclide mean std. dev. +4 3 1 H-1 0 0 +5 3 1 O-16 0 0 +6 3 1 B-10 0 0 +7 3 1 B-11 0 0 +0 3 2 H-1 0 0 +1 3 2 O-16 0 0 +2 3 2 B-10 0 0 +3 3 2 B-11 0 0 material group in group out nuclide mean std. dev. +12 3 1 1 H-1 0.178758 0.033618 +13 3 1 1 O-16 0.075042 0.004782 +14 3 1 1 B-10 0.000000 0.000000 +15 3 1 1 B-11 0.000167 0.000208 +8 3 1 2 H-1 0.027124 0.001806 +9 3 1 2 O-16 0.000148 0.000148 +10 3 1 2 B-10 0.000000 0.000000 +11 3 1 2 B-11 0.000000 0.000000 +4 3 2 1 H-1 0.000000 0.000000 +5 3 2 1 O-16 0.000000 0.000000 +6 3 2 1 B-10 0.000000 0.000000 +7 3 2 1 B-11 0.000000 0.000000 +0 3 2 2 H-1 1.305284 0.235145 +1 3 2 2 O-16 0.071243 0.013291 +2 3 2 2 B-10 0.000000 0.000000 +3 3 2 2 B-11 0.000000 0.000000 material group out nuclide mean std. dev. +4 3 1 H-1 0 0 +5 3 1 O-16 0 0 +6 3 1 B-10 0 0 +7 3 1 B-11 0 0 +0 3 2 H-1 0 0 +1 3 2 O-16 0 0 +2 3 2 B-10 0 0 +3 3 2 B-11 0 0 material group in nuclide mean std. dev. +4 4 1 H-1 0.188813 0.045599 +5 4 1 O-16 0.066636 0.008217 +6 4 1 B-10 0.000232 0.000233 +7 4 1 B-11 0.000042 0.000300 +0 4 2 H-1 1.088920 0.221595 +1 4 2 O-16 0.064481 0.014318 +2 4 2 B-10 0.026367 0.010478 +3 4 2 B-11 0.000000 0.000000 material group in nuclide mean std. dev. +4 4 1 H-1 0 0 +5 4 1 O-16 0 0 +6 4 1 B-10 0 0 +7 4 1 B-11 0 0 +0 4 2 H-1 0 0 +1 4 2 O-16 0 0 +2 4 2 B-10 0 0 +3 4 2 B-11 0 0 material group in group out nuclide mean std. dev. +12 4 1 1 H-1 0.166764 0.043861 +13 4 1 1 O-16 0.066172 0.007943 +14 4 1 1 B-10 0.000000 0.000000 +15 4 1 1 B-11 0.000042 0.000300 +8 4 1 2 H-1 0.021817 0.002327 +9 4 1 2 O-16 0.000464 0.000466 +10 4 1 2 B-10 0.000000 0.000000 +11 4 1 2 B-11 0.000000 0.000000 +4 4 2 1 H-1 0.000000 0.000000 +5 4 2 1 O-16 0.000000 0.000000 +6 4 2 1 B-10 0.000000 0.000000 +7 4 2 1 B-11 0.000000 0.000000 +0 4 2 2 H-1 1.082328 0.222438 +1 4 2 2 O-16 0.064481 0.014318 +2 4 2 2 B-10 0.000000 0.000000 +3 4 2 2 B-11 0.000000 0.000000 material group out nuclide mean std. dev. +4 4 1 H-1 0 0 +5 4 1 O-16 0 0 +6 4 1 B-10 0 0 +7 4 1 B-11 0 0 +0 4 2 H-1 0 0 +1 4 2 O-16 0 0 +2 4 2 B-10 0 0 +3 4 2 B-11 0 0 material group in nuclide mean std. dev. +27 5 1 Fe-54 0 0 +28 5 1 Fe-56 0 0 +29 5 1 Fe-57 0 0 +30 5 1 Fe-58 0 0 +31 5 1 Ni-58 0 0 +32 5 1 Ni-60 0 0 +33 5 1 Ni-61 0 0 +34 5 1 Ni-62 0 0 +35 5 1 Ni-64 0 0 +36 5 1 Mn-55 0 0 +37 5 1 Mo-92 0 0 +38 5 1 Mo-94 0 0 +39 5 1 Mo-95 0 0 +40 5 1 Mo-96 0 0 +41 5 1 Mo-97 0 0 +42 5 1 Mo-98 0 0 +43 5 1 Mo-100 0 0 +44 5 1 Si-28 0 0 +45 5 1 Si-29 0 0 +46 5 1 Si-30 0 0 +47 5 1 Cr-50 0 0 +48 5 1 Cr-52 0 0 +49 5 1 Cr-53 0 0 +50 5 1 Cr-54 0 0 +51 5 1 C-Nat 0 0 +52 5 1 Cu-63 0 0 +53 5 1 Cu-65 0 0 +0 5 2 Fe-54 0 0 +1 5 2 Fe-56 0 0 +2 5 2 Fe-57 0 0 +3 5 2 Fe-58 0 0 +4 5 2 Ni-58 0 0 +5 5 2 Ni-60 0 0 +6 5 2 Ni-61 0 0 +7 5 2 Ni-62 0 0 +8 5 2 Ni-64 0 0 +9 5 2 Mn-55 0 0 +10 5 2 Mo-92 0 0 +11 5 2 Mo-94 0 0 +12 5 2 Mo-95 0 0 +13 5 2 Mo-96 0 0 +14 5 2 Mo-97 0 0 +15 5 2 Mo-98 0 0 +16 5 2 Mo-100 0 0 +17 5 2 Si-28 0 0 +18 5 2 Si-29 0 0 +19 5 2 Si-30 0 0 +20 5 2 Cr-50 0 0 +21 5 2 Cr-52 0 0 +22 5 2 Cr-53 0 0 +23 5 2 Cr-54 0 0 +24 5 2 C-Nat 0 0 +25 5 2 Cu-63 0 0 +26 5 2 Cu-65 0 0 material group in nuclide mean std. dev. +27 5 1 Fe-54 0 0 +28 5 1 Fe-56 0 0 +29 5 1 Fe-57 0 0 +30 5 1 Fe-58 0 0 +31 5 1 Ni-58 0 0 +32 5 1 Ni-60 0 0 +33 5 1 Ni-61 0 0 +34 5 1 Ni-62 0 0 +35 5 1 Ni-64 0 0 +36 5 1 Mn-55 0 0 +37 5 1 Mo-92 0 0 +38 5 1 Mo-94 0 0 +39 5 1 Mo-95 0 0 +40 5 1 Mo-96 0 0 +41 5 1 Mo-97 0 0 +42 5 1 Mo-98 0 0 +43 5 1 Mo-100 0 0 +44 5 1 Si-28 0 0 +45 5 1 Si-29 0 0 +46 5 1 Si-30 0 0 +47 5 1 Cr-50 0 0 +48 5 1 Cr-52 0 0 +49 5 1 Cr-53 0 0 +50 5 1 Cr-54 0 0 +51 5 1 C-Nat 0 0 +52 5 1 Cu-63 0 0 +53 5 1 Cu-65 0 0 +0 5 2 Fe-54 0 0 +1 5 2 Fe-56 0 0 +2 5 2 Fe-57 0 0 +3 5 2 Fe-58 0 0 +4 5 2 Ni-58 0 0 +5 5 2 Ni-60 0 0 +6 5 2 Ni-61 0 0 +7 5 2 Ni-62 0 0 +8 5 2 Ni-64 0 0 +9 5 2 Mn-55 0 0 +10 5 2 Mo-92 0 0 +11 5 2 Mo-94 0 0 +12 5 2 Mo-95 0 0 +13 5 2 Mo-96 0 0 +14 5 2 Mo-97 0 0 +15 5 2 Mo-98 0 0 +16 5 2 Mo-100 0 0 +17 5 2 Si-28 0 0 +18 5 2 Si-29 0 0 +19 5 2 Si-30 0 0 +20 5 2 Cr-50 0 0 +21 5 2 Cr-52 0 0 +22 5 2 Cr-53 0 0 +23 5 2 Cr-54 0 0 +24 5 2 C-Nat 0 0 +25 5 2 Cu-63 0 0 +26 5 2 Cu-65 0 0 material group in group out nuclide mean std. dev. +81 5 1 1 Fe-54 0 0 +82 5 1 1 Fe-56 0 0 +83 5 1 1 Fe-57 0 0 +84 5 1 1 Fe-58 0 0 +85 5 1 1 Ni-58 0 0 +86 5 1 1 Ni-60 0 0 +87 5 1 1 Ni-61 0 0 +88 5 1 1 Ni-62 0 0 +89 5 1 1 Ni-64 0 0 +90 5 1 1 Mn-55 0 0 +91 5 1 1 Mo-92 0 0 +92 5 1 1 Mo-94 0 0 +93 5 1 1 Mo-95 0 0 +94 5 1 1 Mo-96 0 0 +95 5 1 1 Mo-97 0 0 +96 5 1 1 Mo-98 0 0 +97 5 1 1 Mo-100 0 0 +98 5 1 1 Si-28 0 0 +99 5 1 1 Si-29 0 0 +100 5 1 1 Si-30 0 0 +101 5 1 1 Cr-50 0 0 +102 5 1 1 Cr-52 0 0 +103 5 1 1 Cr-53 0 0 +104 5 1 1 Cr-54 0 0 +105 5 1 1 C-Nat 0 0 +106 5 1 1 Cu-63 0 0 +107 5 1 1 Cu-65 0 0 +54 5 1 2 Fe-54 0 0 +55 5 1 2 Fe-56 0 0 +56 5 1 2 Fe-57 0 0 +57 5 1 2 Fe-58 0 0 +58 5 1 2 Ni-58 0 0 +59 5 1 2 Ni-60 0 0 +60 5 1 2 Ni-61 0 0 +61 5 1 2 Ni-62 0 0 +62 5 1 2 Ni-64 0 0 +63 5 1 2 Mn-55 0 0 +64 5 1 2 Mo-92 0 0 +65 5 1 2 Mo-94 0 0 +66 5 1 2 Mo-95 0 0 +67 5 1 2 Mo-96 0 0 +68 5 1 2 Mo-97 0 0 +69 5 1 2 Mo-98 0 0 +70 5 1 2 Mo-100 0 0 +71 5 1 2 Si-28 0 0 +72 5 1 2 Si-29 0 0 +73 5 1 2 Si-30 0 0 +74 5 1 2 Cr-50 0 0 +75 5 1 2 Cr-52 0 0 +76 5 1 2 Cr-53 0 0 +77 5 1 2 Cr-54 0 0 +78 5 1 2 C-Nat 0 0 +79 5 1 2 Cu-63 0 0 +80 5 1 2 Cu-65 0 0 +27 5 2 1 Fe-54 0 0 +28 5 2 1 Fe-56 0 0 +29 5 2 1 Fe-57 0 0 +30 5 2 1 Fe-58 0 0 +31 5 2 1 Ni-58 0 0 +32 5 2 1 Ni-60 0 0 +33 5 2 1 Ni-61 0 0 +34 5 2 1 Ni-62 0 0 +35 5 2 1 Ni-64 0 0 +36 5 2 1 Mn-55 0 0 +37 5 2 1 Mo-92 0 0 +38 5 2 1 Mo-94 0 0 +39 5 2 1 Mo-95 0 0 +40 5 2 1 Mo-96 0 0 +41 5 2 1 Mo-97 0 0 +42 5 2 1 Mo-98 0 0 +43 5 2 1 Mo-100 0 0 +44 5 2 1 Si-28 0 0 +45 5 2 1 Si-29 0 0 +46 5 2 1 Si-30 0 0 +47 5 2 1 Cr-50 0 0 +48 5 2 1 Cr-52 0 0 +49 5 2 1 Cr-53 0 0 +50 5 2 1 Cr-54 0 0 +51 5 2 1 C-Nat 0 0 +52 5 2 1 Cu-63 0 0 +53 5 2 1 Cu-65 0 0 +0 5 2 2 Fe-54 0 0 +1 5 2 2 Fe-56 0 0 +2 5 2 2 Fe-57 0 0 +3 5 2 2 Fe-58 0 0 +4 5 2 2 Ni-58 0 0 +5 5 2 2 Ni-60 0 0 +6 5 2 2 Ni-61 0 0 +7 5 2 2 Ni-62 0 0 +8 5 2 2 Ni-64 0 0 +9 5 2 2 Mn-55 0 0 +10 5 2 2 Mo-92 0 0 +11 5 2 2 Mo-94 0 0 +12 5 2 2 Mo-95 0 0 +13 5 2 2 Mo-96 0 0 +14 5 2 2 Mo-97 0 0 +15 5 2 2 Mo-98 0 0 +16 5 2 2 Mo-100 0 0 +17 5 2 2 Si-28 0 0 +18 5 2 2 Si-29 0 0 +19 5 2 2 Si-30 0 0 +20 5 2 2 Cr-50 0 0 +21 5 2 2 Cr-52 0 0 +22 5 2 2 Cr-53 0 0 +23 5 2 2 Cr-54 0 0 +24 5 2 2 C-Nat 0 0 +25 5 2 2 Cu-63 0 0 +26 5 2 2 Cu-65 0 0 material group out nuclide mean std. dev. +27 5 1 Fe-54 0 0 +28 5 1 Fe-56 0 0 +29 5 1 Fe-57 0 0 +30 5 1 Fe-58 0 0 +31 5 1 Ni-58 0 0 +32 5 1 Ni-60 0 0 +33 5 1 Ni-61 0 0 +34 5 1 Ni-62 0 0 +35 5 1 Ni-64 0 0 +36 5 1 Mn-55 0 0 +37 5 1 Mo-92 0 0 +38 5 1 Mo-94 0 0 +39 5 1 Mo-95 0 0 +40 5 1 Mo-96 0 0 +41 5 1 Mo-97 0 0 +42 5 1 Mo-98 0 0 +43 5 1 Mo-100 0 0 +44 5 1 Si-28 0 0 +45 5 1 Si-29 0 0 +46 5 1 Si-30 0 0 +47 5 1 Cr-50 0 0 +48 5 1 Cr-52 0 0 +49 5 1 Cr-53 0 0 +50 5 1 Cr-54 0 0 +51 5 1 C-Nat 0 0 +52 5 1 Cu-63 0 0 +53 5 1 Cu-65 0 0 +0 5 2 Fe-54 0 0 +1 5 2 Fe-56 0 0 +2 5 2 Fe-57 0 0 +3 5 2 Fe-58 0 0 +4 5 2 Ni-58 0 0 +5 5 2 Ni-60 0 0 +6 5 2 Ni-61 0 0 +7 5 2 Ni-62 0 0 +8 5 2 Ni-64 0 0 +9 5 2 Mn-55 0 0 +10 5 2 Mo-92 0 0 +11 5 2 Mo-94 0 0 +12 5 2 Mo-95 0 0 +13 5 2 Mo-96 0 0 +14 5 2 Mo-97 0 0 +15 5 2 Mo-98 0 0 +16 5 2 Mo-100 0 0 +17 5 2 Si-28 0 0 +18 5 2 Si-29 0 0 +19 5 2 Si-30 0 0 +20 5 2 Cr-50 0 0 +21 5 2 Cr-52 0 0 +22 5 2 Cr-53 0 0 +23 5 2 Cr-54 0 0 +24 5 2 C-Nat 0 0 +25 5 2 Cu-63 0 0 +26 5 2 Cu-65 0 0 material group in nuclide mean std. dev. +21 6 1 H-1 0 0 +22 6 1 O-16 0 0 +23 6 1 B-10 0 0 +24 6 1 B-11 0 0 +25 6 1 Fe-54 0 0 +26 6 1 Fe-56 0 0 +27 6 1 Fe-57 0 0 +28 6 1 Fe-58 0 0 +29 6 1 Ni-58 0 0 +30 6 1 Ni-60 0 0 +31 6 1 Ni-61 0 0 +32 6 1 Ni-62 0 0 +33 6 1 Ni-64 0 0 +34 6 1 Mn-55 0 0 +35 6 1 Si-28 0 0 +36 6 1 Si-29 0 0 +37 6 1 Si-30 0 0 +38 6 1 Cr-50 0 0 +39 6 1 Cr-52 0 0 +40 6 1 Cr-53 0 0 +41 6 1 Cr-54 0 0 +0 6 2 H-1 0 0 +1 6 2 O-16 0 0 +2 6 2 B-10 0 0 +3 6 2 B-11 0 0 +4 6 2 Fe-54 0 0 +5 6 2 Fe-56 0 0 +6 6 2 Fe-57 0 0 +7 6 2 Fe-58 0 0 +8 6 2 Ni-58 0 0 +9 6 2 Ni-60 0 0 +10 6 2 Ni-61 0 0 +11 6 2 Ni-62 0 0 +12 6 2 Ni-64 0 0 +13 6 2 Mn-55 0 0 +14 6 2 Si-28 0 0 +15 6 2 Si-29 0 0 +16 6 2 Si-30 0 0 +17 6 2 Cr-50 0 0 +18 6 2 Cr-52 0 0 +19 6 2 Cr-53 0 0 +20 6 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 6 1 H-1 0 0 +22 6 1 O-16 0 0 +23 6 1 B-10 0 0 +24 6 1 B-11 0 0 +25 6 1 Fe-54 0 0 +26 6 1 Fe-56 0 0 +27 6 1 Fe-57 0 0 +28 6 1 Fe-58 0 0 +29 6 1 Ni-58 0 0 +30 6 1 Ni-60 0 0 +31 6 1 Ni-61 0 0 +32 6 1 Ni-62 0 0 +33 6 1 Ni-64 0 0 +34 6 1 Mn-55 0 0 +35 6 1 Si-28 0 0 +36 6 1 Si-29 0 0 +37 6 1 Si-30 0 0 +38 6 1 Cr-50 0 0 +39 6 1 Cr-52 0 0 +40 6 1 Cr-53 0 0 +41 6 1 Cr-54 0 0 +0 6 2 H-1 0 0 +1 6 2 O-16 0 0 +2 6 2 B-10 0 0 +3 6 2 B-11 0 0 +4 6 2 Fe-54 0 0 +5 6 2 Fe-56 0 0 +6 6 2 Fe-57 0 0 +7 6 2 Fe-58 0 0 +8 6 2 Ni-58 0 0 +9 6 2 Ni-60 0 0 +10 6 2 Ni-61 0 0 +11 6 2 Ni-62 0 0 +12 6 2 Ni-64 0 0 +13 6 2 Mn-55 0 0 +14 6 2 Si-28 0 0 +15 6 2 Si-29 0 0 +16 6 2 Si-30 0 0 +17 6 2 Cr-50 0 0 +18 6 2 Cr-52 0 0 +19 6 2 Cr-53 0 0 +20 6 2 Cr-54 0 0 material group in group out nuclide mean std. dev. +63 6 1 1 H-1 0 0 +64 6 1 1 O-16 0 0 +65 6 1 1 B-10 0 0 +66 6 1 1 B-11 0 0 +67 6 1 1 Fe-54 0 0 +68 6 1 1 Fe-56 0 0 +69 6 1 1 Fe-57 0 0 +70 6 1 1 Fe-58 0 0 +71 6 1 1 Ni-58 0 0 +72 6 1 1 Ni-60 0 0 +73 6 1 1 Ni-61 0 0 +74 6 1 1 Ni-62 0 0 +75 6 1 1 Ni-64 0 0 +76 6 1 1 Mn-55 0 0 +77 6 1 1 Si-28 0 0 +78 6 1 1 Si-29 0 0 +79 6 1 1 Si-30 0 0 +80 6 1 1 Cr-50 0 0 +81 6 1 1 Cr-52 0 0 +82 6 1 1 Cr-53 0 0 +83 6 1 1 Cr-54 0 0 +42 6 1 2 H-1 0 0 +43 6 1 2 O-16 0 0 +44 6 1 2 B-10 0 0 +45 6 1 2 B-11 0 0 +46 6 1 2 Fe-54 0 0 +47 6 1 2 Fe-56 0 0 +48 6 1 2 Fe-57 0 0 +49 6 1 2 Fe-58 0 0 +50 6 1 2 Ni-58 0 0 +51 6 1 2 Ni-60 0 0 +52 6 1 2 Ni-61 0 0 +53 6 1 2 Ni-62 0 0 +54 6 1 2 Ni-64 0 0 +55 6 1 2 Mn-55 0 0 +56 6 1 2 Si-28 0 0 +57 6 1 2 Si-29 0 0 +58 6 1 2 Si-30 0 0 +59 6 1 2 Cr-50 0 0 +60 6 1 2 Cr-52 0 0 +61 6 1 2 Cr-53 0 0 +62 6 1 2 Cr-54 0 0 +21 6 2 1 H-1 0 0 +22 6 2 1 O-16 0 0 +23 6 2 1 B-10 0 0 +24 6 2 1 B-11 0 0 +25 6 2 1 Fe-54 0 0 +26 6 2 1 Fe-56 0 0 +27 6 2 1 Fe-57 0 0 +28 6 2 1 Fe-58 0 0 +29 6 2 1 Ni-58 0 0 +30 6 2 1 Ni-60 0 0 +31 6 2 1 Ni-61 0 0 +32 6 2 1 Ni-62 0 0 +33 6 2 1 Ni-64 0 0 +34 6 2 1 Mn-55 0 0 +35 6 2 1 Si-28 0 0 +36 6 2 1 Si-29 0 0 +37 6 2 1 Si-30 0 0 +38 6 2 1 Cr-50 0 0 +39 6 2 1 Cr-52 0 0 +40 6 2 1 Cr-53 0 0 +41 6 2 1 Cr-54 0 0 +0 6 2 2 H-1 0 0 +1 6 2 2 O-16 0 0 +2 6 2 2 B-10 0 0 +3 6 2 2 B-11 0 0 +4 6 2 2 Fe-54 0 0 +5 6 2 2 Fe-56 0 0 +6 6 2 2 Fe-57 0 0 +7 6 2 2 Fe-58 0 0 +8 6 2 2 Ni-58 0 0 +9 6 2 2 Ni-60 0 0 +10 6 2 2 Ni-61 0 0 +11 6 2 2 Ni-62 0 0 +12 6 2 2 Ni-64 0 0 +13 6 2 2 Mn-55 0 0 +14 6 2 2 Si-28 0 0 +15 6 2 2 Si-29 0 0 +16 6 2 2 Si-30 0 0 +17 6 2 2 Cr-50 0 0 +18 6 2 2 Cr-52 0 0 +19 6 2 2 Cr-53 0 0 +20 6 2 2 Cr-54 0 0 material group out nuclide mean std. dev. +21 6 1 H-1 0 0 +22 6 1 O-16 0 0 +23 6 1 B-10 0 0 +24 6 1 B-11 0 0 +25 6 1 Fe-54 0 0 +26 6 1 Fe-56 0 0 +27 6 1 Fe-57 0 0 +28 6 1 Fe-58 0 0 +29 6 1 Ni-58 0 0 +30 6 1 Ni-60 0 0 +31 6 1 Ni-61 0 0 +32 6 1 Ni-62 0 0 +33 6 1 Ni-64 0 0 +34 6 1 Mn-55 0 0 +35 6 1 Si-28 0 0 +36 6 1 Si-29 0 0 +37 6 1 Si-30 0 0 +38 6 1 Cr-50 0 0 +39 6 1 Cr-52 0 0 +40 6 1 Cr-53 0 0 +41 6 1 Cr-54 0 0 +0 6 2 H-1 0 0 +1 6 2 O-16 0 0 +2 6 2 B-10 0 0 +3 6 2 B-11 0 0 +4 6 2 Fe-54 0 0 +5 6 2 Fe-56 0 0 +6 6 2 Fe-57 0 0 +7 6 2 Fe-58 0 0 +8 6 2 Ni-58 0 0 +9 6 2 Ni-60 0 0 +10 6 2 Ni-61 0 0 +11 6 2 Ni-62 0 0 +12 6 2 Ni-64 0 0 +13 6 2 Mn-55 0 0 +14 6 2 Si-28 0 0 +15 6 2 Si-29 0 0 +16 6 2 Si-30 0 0 +17 6 2 Cr-50 0 0 +18 6 2 Cr-52 0 0 +19 6 2 Cr-53 0 0 +20 6 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 7 1 H-1 0 0 +22 7 1 O-16 0 0 +23 7 1 B-10 0 0 +24 7 1 B-11 0 0 +25 7 1 Fe-54 0 0 +26 7 1 Fe-56 0 0 +27 7 1 Fe-57 0 0 +28 7 1 Fe-58 0 0 +29 7 1 Ni-58 0 0 +30 7 1 Ni-60 0 0 +31 7 1 Ni-61 0 0 +32 7 1 Ni-62 0 0 +33 7 1 Ni-64 0 0 +34 7 1 Mn-55 0 0 +35 7 1 Si-28 0 0 +36 7 1 Si-29 0 0 +37 7 1 Si-30 0 0 +38 7 1 Cr-50 0 0 +39 7 1 Cr-52 0 0 +40 7 1 Cr-53 0 0 +41 7 1 Cr-54 0 0 +0 7 2 H-1 0 0 +1 7 2 O-16 0 0 +2 7 2 B-10 0 0 +3 7 2 B-11 0 0 +4 7 2 Fe-54 0 0 +5 7 2 Fe-56 0 0 +6 7 2 Fe-57 0 0 +7 7 2 Fe-58 0 0 +8 7 2 Ni-58 0 0 +9 7 2 Ni-60 0 0 +10 7 2 Ni-61 0 0 +11 7 2 Ni-62 0 0 +12 7 2 Ni-64 0 0 +13 7 2 Mn-55 0 0 +14 7 2 Si-28 0 0 +15 7 2 Si-29 0 0 +16 7 2 Si-30 0 0 +17 7 2 Cr-50 0 0 +18 7 2 Cr-52 0 0 +19 7 2 Cr-53 0 0 +20 7 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 7 1 H-1 0 0 +22 7 1 O-16 0 0 +23 7 1 B-10 0 0 +24 7 1 B-11 0 0 +25 7 1 Fe-54 0 0 +26 7 1 Fe-56 0 0 +27 7 1 Fe-57 0 0 +28 7 1 Fe-58 0 0 +29 7 1 Ni-58 0 0 +30 7 1 Ni-60 0 0 +31 7 1 Ni-61 0 0 +32 7 1 Ni-62 0 0 +33 7 1 Ni-64 0 0 +34 7 1 Mn-55 0 0 +35 7 1 Si-28 0 0 +36 7 1 Si-29 0 0 +37 7 1 Si-30 0 0 +38 7 1 Cr-50 0 0 +39 7 1 Cr-52 0 0 +40 7 1 Cr-53 0 0 +41 7 1 Cr-54 0 0 +0 7 2 H-1 0 0 +1 7 2 O-16 0 0 +2 7 2 B-10 0 0 +3 7 2 B-11 0 0 +4 7 2 Fe-54 0 0 +5 7 2 Fe-56 0 0 +6 7 2 Fe-57 0 0 +7 7 2 Fe-58 0 0 +8 7 2 Ni-58 0 0 +9 7 2 Ni-60 0 0 +10 7 2 Ni-61 0 0 +11 7 2 Ni-62 0 0 +12 7 2 Ni-64 0 0 +13 7 2 Mn-55 0 0 +14 7 2 Si-28 0 0 +15 7 2 Si-29 0 0 +16 7 2 Si-30 0 0 +17 7 2 Cr-50 0 0 +18 7 2 Cr-52 0 0 +19 7 2 Cr-53 0 0 +20 7 2 Cr-54 0 0 material group in group out nuclide mean std. dev. +63 7 1 1 H-1 0 0 +64 7 1 1 O-16 0 0 +65 7 1 1 B-10 0 0 +66 7 1 1 B-11 0 0 +67 7 1 1 Fe-54 0 0 +68 7 1 1 Fe-56 0 0 +69 7 1 1 Fe-57 0 0 +70 7 1 1 Fe-58 0 0 +71 7 1 1 Ni-58 0 0 +72 7 1 1 Ni-60 0 0 +73 7 1 1 Ni-61 0 0 +74 7 1 1 Ni-62 0 0 +75 7 1 1 Ni-64 0 0 +76 7 1 1 Mn-55 0 0 +77 7 1 1 Si-28 0 0 +78 7 1 1 Si-29 0 0 +79 7 1 1 Si-30 0 0 +80 7 1 1 Cr-50 0 0 +81 7 1 1 Cr-52 0 0 +82 7 1 1 Cr-53 0 0 +83 7 1 1 Cr-54 0 0 +42 7 1 2 H-1 0 0 +43 7 1 2 O-16 0 0 +44 7 1 2 B-10 0 0 +45 7 1 2 B-11 0 0 +46 7 1 2 Fe-54 0 0 +47 7 1 2 Fe-56 0 0 +48 7 1 2 Fe-57 0 0 +49 7 1 2 Fe-58 0 0 +50 7 1 2 Ni-58 0 0 +51 7 1 2 Ni-60 0 0 +52 7 1 2 Ni-61 0 0 +53 7 1 2 Ni-62 0 0 +54 7 1 2 Ni-64 0 0 +55 7 1 2 Mn-55 0 0 +56 7 1 2 Si-28 0 0 +57 7 1 2 Si-29 0 0 +58 7 1 2 Si-30 0 0 +59 7 1 2 Cr-50 0 0 +60 7 1 2 Cr-52 0 0 +61 7 1 2 Cr-53 0 0 +62 7 1 2 Cr-54 0 0 +21 7 2 1 H-1 0 0 +22 7 2 1 O-16 0 0 +23 7 2 1 B-10 0 0 +24 7 2 1 B-11 0 0 +25 7 2 1 Fe-54 0 0 +26 7 2 1 Fe-56 0 0 +27 7 2 1 Fe-57 0 0 +28 7 2 1 Fe-58 0 0 +29 7 2 1 Ni-58 0 0 +30 7 2 1 Ni-60 0 0 +31 7 2 1 Ni-61 0 0 +32 7 2 1 Ni-62 0 0 +33 7 2 1 Ni-64 0 0 +34 7 2 1 Mn-55 0 0 +35 7 2 1 Si-28 0 0 +36 7 2 1 Si-29 0 0 +37 7 2 1 Si-30 0 0 +38 7 2 1 Cr-50 0 0 +39 7 2 1 Cr-52 0 0 +40 7 2 1 Cr-53 0 0 +41 7 2 1 Cr-54 0 0 +0 7 2 2 H-1 0 0 +1 7 2 2 O-16 0 0 +2 7 2 2 B-10 0 0 +3 7 2 2 B-11 0 0 +4 7 2 2 Fe-54 0 0 +5 7 2 2 Fe-56 0 0 +6 7 2 2 Fe-57 0 0 +7 7 2 2 Fe-58 0 0 +8 7 2 2 Ni-58 0 0 +9 7 2 2 Ni-60 0 0 +10 7 2 2 Ni-61 0 0 +11 7 2 2 Ni-62 0 0 +12 7 2 2 Ni-64 0 0 +13 7 2 2 Mn-55 0 0 +14 7 2 2 Si-28 0 0 +15 7 2 2 Si-29 0 0 +16 7 2 2 Si-30 0 0 +17 7 2 2 Cr-50 0 0 +18 7 2 2 Cr-52 0 0 +19 7 2 2 Cr-53 0 0 +20 7 2 2 Cr-54 0 0 material group out nuclide mean std. dev. +21 7 1 H-1 0 0 +22 7 1 O-16 0 0 +23 7 1 B-10 0 0 +24 7 1 B-11 0 0 +25 7 1 Fe-54 0 0 +26 7 1 Fe-56 0 0 +27 7 1 Fe-57 0 0 +28 7 1 Fe-58 0 0 +29 7 1 Ni-58 0 0 +30 7 1 Ni-60 0 0 +31 7 1 Ni-61 0 0 +32 7 1 Ni-62 0 0 +33 7 1 Ni-64 0 0 +34 7 1 Mn-55 0 0 +35 7 1 Si-28 0 0 +36 7 1 Si-29 0 0 +37 7 1 Si-30 0 0 +38 7 1 Cr-50 0 0 +39 7 1 Cr-52 0 0 +40 7 1 Cr-53 0 0 +41 7 1 Cr-54 0 0 +0 7 2 H-1 0 0 +1 7 2 O-16 0 0 +2 7 2 B-10 0 0 +3 7 2 B-11 0 0 +4 7 2 Fe-54 0 0 +5 7 2 Fe-56 0 0 +6 7 2 Fe-57 0 0 +7 7 2 Fe-58 0 0 +8 7 2 Ni-58 0 0 +9 7 2 Ni-60 0 0 +10 7 2 Ni-61 0 0 +11 7 2 Ni-62 0 0 +12 7 2 Ni-64 0 0 +13 7 2 Mn-55 0 0 +14 7 2 Si-28 0 0 +15 7 2 Si-29 0 0 +16 7 2 Si-30 0 0 +17 7 2 Cr-50 0 0 +18 7 2 Cr-52 0 0 +19 7 2 Cr-53 0 0 +20 7 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 8 1 H-1 0 0 +22 8 1 O-16 0 0 +23 8 1 B-10 0 0 +24 8 1 B-11 0 0 +25 8 1 Fe-54 0 0 +26 8 1 Fe-56 0 0 +27 8 1 Fe-57 0 0 +28 8 1 Fe-58 0 0 +29 8 1 Ni-58 0 0 +30 8 1 Ni-60 0 0 +31 8 1 Ni-61 0 0 +32 8 1 Ni-62 0 0 +33 8 1 Ni-64 0 0 +34 8 1 Mn-55 0 0 +35 8 1 Si-28 0 0 +36 8 1 Si-29 0 0 +37 8 1 Si-30 0 0 +38 8 1 Cr-50 0 0 +39 8 1 Cr-52 0 0 +40 8 1 Cr-53 0 0 +41 8 1 Cr-54 0 0 +0 8 2 H-1 0 0 +1 8 2 O-16 0 0 +2 8 2 B-10 0 0 +3 8 2 B-11 0 0 +4 8 2 Fe-54 0 0 +5 8 2 Fe-56 0 0 +6 8 2 Fe-57 0 0 +7 8 2 Fe-58 0 0 +8 8 2 Ni-58 0 0 +9 8 2 Ni-60 0 0 +10 8 2 Ni-61 0 0 +11 8 2 Ni-62 0 0 +12 8 2 Ni-64 0 0 +13 8 2 Mn-55 0 0 +14 8 2 Si-28 0 0 +15 8 2 Si-29 0 0 +16 8 2 Si-30 0 0 +17 8 2 Cr-50 0 0 +18 8 2 Cr-52 0 0 +19 8 2 Cr-53 0 0 +20 8 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 8 1 H-1 0 0 +22 8 1 O-16 0 0 +23 8 1 B-10 0 0 +24 8 1 B-11 0 0 +25 8 1 Fe-54 0 0 +26 8 1 Fe-56 0 0 +27 8 1 Fe-57 0 0 +28 8 1 Fe-58 0 0 +29 8 1 Ni-58 0 0 +30 8 1 Ni-60 0 0 +31 8 1 Ni-61 0 0 +32 8 1 Ni-62 0 0 +33 8 1 Ni-64 0 0 +34 8 1 Mn-55 0 0 +35 8 1 Si-28 0 0 +36 8 1 Si-29 0 0 +37 8 1 Si-30 0 0 +38 8 1 Cr-50 0 0 +39 8 1 Cr-52 0 0 +40 8 1 Cr-53 0 0 +41 8 1 Cr-54 0 0 +0 8 2 H-1 0 0 +1 8 2 O-16 0 0 +2 8 2 B-10 0 0 +3 8 2 B-11 0 0 +4 8 2 Fe-54 0 0 +5 8 2 Fe-56 0 0 +6 8 2 Fe-57 0 0 +7 8 2 Fe-58 0 0 +8 8 2 Ni-58 0 0 +9 8 2 Ni-60 0 0 +10 8 2 Ni-61 0 0 +11 8 2 Ni-62 0 0 +12 8 2 Ni-64 0 0 +13 8 2 Mn-55 0 0 +14 8 2 Si-28 0 0 +15 8 2 Si-29 0 0 +16 8 2 Si-30 0 0 +17 8 2 Cr-50 0 0 +18 8 2 Cr-52 0 0 +19 8 2 Cr-53 0 0 +20 8 2 Cr-54 0 0 material group in group out nuclide mean std. dev. +63 8 1 1 H-1 0 0 +64 8 1 1 O-16 0 0 +65 8 1 1 B-10 0 0 +66 8 1 1 B-11 0 0 +67 8 1 1 Fe-54 0 0 +68 8 1 1 Fe-56 0 0 +69 8 1 1 Fe-57 0 0 +70 8 1 1 Fe-58 0 0 +71 8 1 1 Ni-58 0 0 +72 8 1 1 Ni-60 0 0 +73 8 1 1 Ni-61 0 0 +74 8 1 1 Ni-62 0 0 +75 8 1 1 Ni-64 0 0 +76 8 1 1 Mn-55 0 0 +77 8 1 1 Si-28 0 0 +78 8 1 1 Si-29 0 0 +79 8 1 1 Si-30 0 0 +80 8 1 1 Cr-50 0 0 +81 8 1 1 Cr-52 0 0 +82 8 1 1 Cr-53 0 0 +83 8 1 1 Cr-54 0 0 +42 8 1 2 H-1 0 0 +43 8 1 2 O-16 0 0 +44 8 1 2 B-10 0 0 +45 8 1 2 B-11 0 0 +46 8 1 2 Fe-54 0 0 +47 8 1 2 Fe-56 0 0 +48 8 1 2 Fe-57 0 0 +49 8 1 2 Fe-58 0 0 +50 8 1 2 Ni-58 0 0 +51 8 1 2 Ni-60 0 0 +52 8 1 2 Ni-61 0 0 +53 8 1 2 Ni-62 0 0 +54 8 1 2 Ni-64 0 0 +55 8 1 2 Mn-55 0 0 +56 8 1 2 Si-28 0 0 +57 8 1 2 Si-29 0 0 +58 8 1 2 Si-30 0 0 +59 8 1 2 Cr-50 0 0 +60 8 1 2 Cr-52 0 0 +61 8 1 2 Cr-53 0 0 +62 8 1 2 Cr-54 0 0 +21 8 2 1 H-1 0 0 +22 8 2 1 O-16 0 0 +23 8 2 1 B-10 0 0 +24 8 2 1 B-11 0 0 +25 8 2 1 Fe-54 0 0 +26 8 2 1 Fe-56 0 0 +27 8 2 1 Fe-57 0 0 +28 8 2 1 Fe-58 0 0 +29 8 2 1 Ni-58 0 0 +30 8 2 1 Ni-60 0 0 +31 8 2 1 Ni-61 0 0 +32 8 2 1 Ni-62 0 0 +33 8 2 1 Ni-64 0 0 +34 8 2 1 Mn-55 0 0 +35 8 2 1 Si-28 0 0 +36 8 2 1 Si-29 0 0 +37 8 2 1 Si-30 0 0 +38 8 2 1 Cr-50 0 0 +39 8 2 1 Cr-52 0 0 +40 8 2 1 Cr-53 0 0 +41 8 2 1 Cr-54 0 0 +0 8 2 2 H-1 0 0 +1 8 2 2 O-16 0 0 +2 8 2 2 B-10 0 0 +3 8 2 2 B-11 0 0 +4 8 2 2 Fe-54 0 0 +5 8 2 2 Fe-56 0 0 +6 8 2 2 Fe-57 0 0 +7 8 2 2 Fe-58 0 0 +8 8 2 2 Ni-58 0 0 +9 8 2 2 Ni-60 0 0 +10 8 2 2 Ni-61 0 0 +11 8 2 2 Ni-62 0 0 +12 8 2 2 Ni-64 0 0 +13 8 2 2 Mn-55 0 0 +14 8 2 2 Si-28 0 0 +15 8 2 2 Si-29 0 0 +16 8 2 2 Si-30 0 0 +17 8 2 2 Cr-50 0 0 +18 8 2 2 Cr-52 0 0 +19 8 2 2 Cr-53 0 0 +20 8 2 2 Cr-54 0 0 material group out nuclide mean std. dev. +21 8 1 H-1 0 0 +22 8 1 O-16 0 0 +23 8 1 B-10 0 0 +24 8 1 B-11 0 0 +25 8 1 Fe-54 0 0 +26 8 1 Fe-56 0 0 +27 8 1 Fe-57 0 0 +28 8 1 Fe-58 0 0 +29 8 1 Ni-58 0 0 +30 8 1 Ni-60 0 0 +31 8 1 Ni-61 0 0 +32 8 1 Ni-62 0 0 +33 8 1 Ni-64 0 0 +34 8 1 Mn-55 0 0 +35 8 1 Si-28 0 0 +36 8 1 Si-29 0 0 +37 8 1 Si-30 0 0 +38 8 1 Cr-50 0 0 +39 8 1 Cr-52 0 0 +40 8 1 Cr-53 0 0 +41 8 1 Cr-54 0 0 +0 8 2 H-1 0 0 +1 8 2 O-16 0 0 +2 8 2 B-10 0 0 +3 8 2 B-11 0 0 +4 8 2 Fe-54 0 0 +5 8 2 Fe-56 0 0 +6 8 2 Fe-57 0 0 +7 8 2 Fe-58 0 0 +8 8 2 Ni-58 0 0 +9 8 2 Ni-60 0 0 +10 8 2 Ni-61 0 0 +11 8 2 Ni-62 0 0 +12 8 2 Ni-64 0 0 +13 8 2 Mn-55 0 0 +14 8 2 Si-28 0 0 +15 8 2 Si-29 0 0 +16 8 2 Si-30 0 0 +17 8 2 Cr-50 0 0 +18 8 2 Cr-52 0 0 +19 8 2 Cr-53 0 0 +20 8 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 9 1 H-1 0.106160 0.179178 +22 9 1 O-16 0.272020 0.171699 +23 9 1 B-10 0.000000 0.000000 +24 9 1 B-11 0.000000 0.000000 +25 9 1 Fe-54 0.000000 0.000000 +26 9 1 Fe-56 0.000000 0.000000 +27 9 1 Fe-57 0.000000 0.000000 +28 9 1 Fe-58 0.000000 0.000000 +29 9 1 Ni-58 0.000000 0.000000 +30 9 1 Ni-60 0.000000 0.000000 +31 9 1 Ni-61 0.000000 0.000000 +32 9 1 Ni-62 0.000000 0.000000 +33 9 1 Ni-64 0.000000 0.000000 +34 9 1 Mn-55 0.085133 0.082479 +35 9 1 Si-28 0.000000 0.000000 +36 9 1 Si-29 0.000000 0.000000 +37 9 1 Si-30 0.000000 0.000000 +38 9 1 Cr-50 0.000000 0.000000 +39 9 1 Cr-52 0.000000 0.000000 +40 9 1 Cr-53 0.040723 0.079827 +41 9 1 Cr-54 0.000000 0.000000 +0 9 2 H-1 1.417955 2.158027 +1 9 2 O-16 0.000000 0.000000 +2 9 2 B-10 0.269141 0.380622 +3 9 2 B-11 0.000000 0.000000 +4 9 2 Fe-54 0.000000 0.000000 +5 9 2 Fe-56 0.000000 0.000000 +6 9 2 Fe-57 0.000000 0.000000 +7 9 2 Fe-58 0.000000 0.000000 +8 9 2 Ni-58 0.000000 0.000000 +9 9 2 Ni-60 0.000000 0.000000 +10 9 2 Ni-61 0.000000 0.000000 +11 9 2 Ni-62 0.000000 0.000000 +12 9 2 Ni-64 0.000000 0.000000 +13 9 2 Mn-55 0.000000 0.000000 +14 9 2 Si-28 0.000000 0.000000 +15 9 2 Si-29 0.000000 0.000000 +16 9 2 Si-30 0.000000 0.000000 +17 9 2 Cr-50 0.000000 0.000000 +18 9 2 Cr-52 0.000000 0.000000 +19 9 2 Cr-53 0.000000 0.000000 +20 9 2 Cr-54 0.000000 0.000000 material group in nuclide mean std. dev. +21 9 1 H-1 0 0 +22 9 1 O-16 0 0 +23 9 1 B-10 0 0 +24 9 1 B-11 0 0 +25 9 1 Fe-54 0 0 +26 9 1 Fe-56 0 0 +27 9 1 Fe-57 0 0 +28 9 1 Fe-58 0 0 +29 9 1 Ni-58 0 0 +30 9 1 Ni-60 0 0 +31 9 1 Ni-61 0 0 +32 9 1 Ni-62 0 0 +33 9 1 Ni-64 0 0 +34 9 1 Mn-55 0 0 +35 9 1 Si-28 0 0 +36 9 1 Si-29 0 0 +37 9 1 Si-30 0 0 +38 9 1 Cr-50 0 0 +39 9 1 Cr-52 0 0 +40 9 1 Cr-53 0 0 +41 9 1 Cr-54 0 0 +0 9 2 H-1 0 0 +1 9 2 O-16 0 0 +2 9 2 B-10 0 0 +3 9 2 B-11 0 0 +4 9 2 Fe-54 0 0 +5 9 2 Fe-56 0 0 +6 9 2 Fe-57 0 0 +7 9 2 Fe-58 0 0 +8 9 2 Ni-58 0 0 +9 9 2 Ni-60 0 0 +10 9 2 Ni-61 0 0 +11 9 2 Ni-62 0 0 +12 9 2 Ni-64 0 0 +13 9 2 Mn-55 0 0 +14 9 2 Si-28 0 0 +15 9 2 Si-29 0 0 +16 9 2 Si-30 0 0 +17 9 2 Cr-50 0 0 +18 9 2 Cr-52 0 0 +19 9 2 Cr-53 0 0 +20 9 2 Cr-54 0 0 material group in group out nuclide mean std. dev. +63 9 1 1 H-1 0.106160 0.179178 +64 9 1 1 O-16 0.272020 0.171699 +65 9 1 1 B-10 0.000000 0.000000 +66 9 1 1 B-11 0.000000 0.000000 +67 9 1 1 Fe-54 0.000000 0.000000 +68 9 1 1 Fe-56 0.000000 0.000000 +69 9 1 1 Fe-57 0.000000 0.000000 +70 9 1 1 Fe-58 0.000000 0.000000 +71 9 1 1 Ni-58 0.000000 0.000000 +72 9 1 1 Ni-60 0.000000 0.000000 +73 9 1 1 Ni-61 0.000000 0.000000 +74 9 1 1 Ni-62 0.000000 0.000000 +75 9 1 1 Ni-64 0.000000 0.000000 +76 9 1 1 Mn-55 0.085133 0.082479 +77 9 1 1 Si-28 0.000000 0.000000 +78 9 1 1 Si-29 0.000000 0.000000 +79 9 1 1 Si-30 0.000000 0.000000 +80 9 1 1 Cr-50 0.000000 0.000000 +81 9 1 1 Cr-52 0.000000 0.000000 +82 9 1 1 Cr-53 0.040723 0.079827 +83 9 1 1 Cr-54 0.000000 0.000000 +42 9 1 2 H-1 0.000000 0.000000 +43 9 1 2 O-16 0.000000 0.000000 +44 9 1 2 B-10 0.000000 0.000000 +45 9 1 2 B-11 0.000000 0.000000 +46 9 1 2 Fe-54 0.000000 0.000000 +47 9 1 2 Fe-56 0.000000 0.000000 +48 9 1 2 Fe-57 0.000000 0.000000 +49 9 1 2 Fe-58 0.000000 0.000000 +50 9 1 2 Ni-58 0.000000 0.000000 +51 9 1 2 Ni-60 0.000000 0.000000 +52 9 1 2 Ni-61 0.000000 0.000000 +53 9 1 2 Ni-62 0.000000 0.000000 +54 9 1 2 Ni-64 0.000000 0.000000 +55 9 1 2 Mn-55 0.000000 0.000000 +56 9 1 2 Si-28 0.000000 0.000000 +57 9 1 2 Si-29 0.000000 0.000000 +58 9 1 2 Si-30 0.000000 0.000000 +59 9 1 2 Cr-50 0.000000 0.000000 +60 9 1 2 Cr-52 0.000000 0.000000 +61 9 1 2 Cr-53 0.000000 0.000000 +62 9 1 2 Cr-54 0.000000 0.000000 +21 9 2 1 H-1 0.000000 0.000000 +22 9 2 1 O-16 0.000000 0.000000 +23 9 2 1 B-10 0.000000 0.000000 +24 9 2 1 B-11 0.000000 0.000000 +25 9 2 1 Fe-54 0.000000 0.000000 +26 9 2 1 Fe-56 0.000000 0.000000 +27 9 2 1 Fe-57 0.000000 0.000000 +28 9 2 1 Fe-58 0.000000 0.000000 +29 9 2 1 Ni-58 0.000000 0.000000 +30 9 2 1 Ni-60 0.000000 0.000000 +31 9 2 1 Ni-61 0.000000 0.000000 +32 9 2 1 Ni-62 0.000000 0.000000 +33 9 2 1 Ni-64 0.000000 0.000000 +34 9 2 1 Mn-55 0.000000 0.000000 +35 9 2 1 Si-28 0.000000 0.000000 +36 9 2 1 Si-29 0.000000 0.000000 +37 9 2 1 Si-30 0.000000 0.000000 +38 9 2 1 Cr-50 0.000000 0.000000 +39 9 2 1 Cr-52 0.000000 0.000000 +40 9 2 1 Cr-53 0.000000 0.000000 +41 9 2 1 Cr-54 0.000000 0.000000 +0 9 2 2 H-1 1.417955 2.158027 +1 9 2 2 O-16 0.000000 0.000000 +2 9 2 2 B-10 0.000000 0.000000 +3 9 2 2 B-11 0.000000 0.000000 +4 9 2 2 Fe-54 0.000000 0.000000 +5 9 2 2 Fe-56 0.000000 0.000000 +6 9 2 2 Fe-57 0.000000 0.000000 +7 9 2 2 Fe-58 0.000000 0.000000 +8 9 2 2 Ni-58 0.000000 0.000000 +9 9 2 2 Ni-60 0.000000 0.000000 +10 9 2 2 Ni-61 0.000000 0.000000 +11 9 2 2 Ni-62 0.000000 0.000000 +12 9 2 2 Ni-64 0.000000 0.000000 +13 9 2 2 Mn-55 0.000000 0.000000 +14 9 2 2 Si-28 0.000000 0.000000 +15 9 2 2 Si-29 0.000000 0.000000 +16 9 2 2 Si-30 0.000000 0.000000 +17 9 2 2 Cr-50 0.000000 0.000000 +18 9 2 2 Cr-52 0.000000 0.000000 +19 9 2 2 Cr-53 0.000000 0.000000 +20 9 2 2 Cr-54 0.000000 0.000000 material group out nuclide mean std. dev. +21 9 1 H-1 0 0 +22 9 1 O-16 0 0 +23 9 1 B-10 0 0 +24 9 1 B-11 0 0 +25 9 1 Fe-54 0 0 +26 9 1 Fe-56 0 0 +27 9 1 Fe-57 0 0 +28 9 1 Fe-58 0 0 +29 9 1 Ni-58 0 0 +30 9 1 Ni-60 0 0 +31 9 1 Ni-61 0 0 +32 9 1 Ni-62 0 0 +33 9 1 Ni-64 0 0 +34 9 1 Mn-55 0 0 +35 9 1 Si-28 0 0 +36 9 1 Si-29 0 0 +37 9 1 Si-30 0 0 +38 9 1 Cr-50 0 0 +39 9 1 Cr-52 0 0 +40 9 1 Cr-53 0 0 +41 9 1 Cr-54 0 0 +0 9 2 H-1 0 0 +1 9 2 O-16 0 0 +2 9 2 B-10 0 0 +3 9 2 B-11 0 0 +4 9 2 Fe-54 0 0 +5 9 2 Fe-56 0 0 +6 9 2 Fe-57 0 0 +7 9 2 Fe-58 0 0 +8 9 2 Ni-58 0 0 +9 9 2 Ni-60 0 0 +10 9 2 Ni-61 0 0 +11 9 2 Ni-62 0 0 +12 9 2 Ni-64 0 0 +13 9 2 Mn-55 0 0 +14 9 2 Si-28 0 0 +15 9 2 Si-29 0 0 +16 9 2 Si-30 0 0 +17 9 2 Cr-50 0 0 +18 9 2 Cr-52 0 0 +19 9 2 Cr-53 0 0 +20 9 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 10 1 H-1 0 0 +22 10 1 O-16 0 0 +23 10 1 B-10 0 0 +24 10 1 B-11 0 0 +25 10 1 Fe-54 0 0 +26 10 1 Fe-56 0 0 +27 10 1 Fe-57 0 0 +28 10 1 Fe-58 0 0 +29 10 1 Ni-58 0 0 +30 10 1 Ni-60 0 0 +31 10 1 Ni-61 0 0 +32 10 1 Ni-62 0 0 +33 10 1 Ni-64 0 0 +34 10 1 Mn-55 0 0 +35 10 1 Si-28 0 0 +36 10 1 Si-29 0 0 +37 10 1 Si-30 0 0 +38 10 1 Cr-50 0 0 +39 10 1 Cr-52 0 0 +40 10 1 Cr-53 0 0 +41 10 1 Cr-54 0 0 +0 10 2 H-1 0 0 +1 10 2 O-16 0 0 +2 10 2 B-10 0 0 +3 10 2 B-11 0 0 +4 10 2 Fe-54 0 0 +5 10 2 Fe-56 0 0 +6 10 2 Fe-57 0 0 +7 10 2 Fe-58 0 0 +8 10 2 Ni-58 0 0 +9 10 2 Ni-60 0 0 +10 10 2 Ni-61 0 0 +11 10 2 Ni-62 0 0 +12 10 2 Ni-64 0 0 +13 10 2 Mn-55 0 0 +14 10 2 Si-28 0 0 +15 10 2 Si-29 0 0 +16 10 2 Si-30 0 0 +17 10 2 Cr-50 0 0 +18 10 2 Cr-52 0 0 +19 10 2 Cr-53 0 0 +20 10 2 Cr-54 0 0 material group in nuclide mean std. dev. +21 10 1 H-1 0 0 +22 10 1 O-16 0 0 +23 10 1 B-10 0 0 +24 10 1 B-11 0 0 +25 10 1 Fe-54 0 0 +26 10 1 Fe-56 0 0 +27 10 1 Fe-57 0 0 +28 10 1 Fe-58 0 0 +29 10 1 Ni-58 0 0 +30 10 1 Ni-60 0 0 +31 10 1 Ni-61 0 0 +32 10 1 Ni-62 0 0 +33 10 1 Ni-64 0 0 +34 10 1 Mn-55 0 0 +35 10 1 Si-28 0 0 +36 10 1 Si-29 0 0 +37 10 1 Si-30 0 0 +38 10 1 Cr-50 0 0 +39 10 1 Cr-52 0 0 +40 10 1 Cr-53 0 0 +41 10 1 Cr-54 0 0 +0 10 2 H-1 0 0 +1 10 2 O-16 0 0 +2 10 2 B-10 0 0 +3 10 2 B-11 0 0 +4 10 2 Fe-54 0 0 +5 10 2 Fe-56 0 0 +6 10 2 Fe-57 0 0 +7 10 2 Fe-58 0 0 +8 10 2 Ni-58 0 0 +9 10 2 Ni-60 0 0 +10 10 2 Ni-61 0 0 +11 10 2 Ni-62 0 0 +12 10 2 Ni-64 0 0 +13 10 2 Mn-55 0 0 +14 10 2 Si-28 0 0 +15 10 2 Si-29 0 0 +16 10 2 Si-30 0 0 +17 10 2 Cr-50 0 0 +18 10 2 Cr-52 0 0 +19 10 2 Cr-53 0 0 +20 10 2 Cr-54 0 0 material group in group out nuclide mean std. dev. +63 10 1 1 H-1 0 0 +64 10 1 1 O-16 0 0 +65 10 1 1 B-10 0 0 +66 10 1 1 B-11 0 0 +67 10 1 1 Fe-54 0 0 +68 10 1 1 Fe-56 0 0 +69 10 1 1 Fe-57 0 0 +70 10 1 1 Fe-58 0 0 +71 10 1 1 Ni-58 0 0 +72 10 1 1 Ni-60 0 0 +73 10 1 1 Ni-61 0 0 +74 10 1 1 Ni-62 0 0 +75 10 1 1 Ni-64 0 0 +76 10 1 1 Mn-55 0 0 +77 10 1 1 Si-28 0 0 +78 10 1 1 Si-29 0 0 +79 10 1 1 Si-30 0 0 +80 10 1 1 Cr-50 0 0 +81 10 1 1 Cr-52 0 0 +82 10 1 1 Cr-53 0 0 +83 10 1 1 Cr-54 0 0 +42 10 1 2 H-1 0 0 +43 10 1 2 O-16 0 0 +44 10 1 2 B-10 0 0 +45 10 1 2 B-11 0 0 +46 10 1 2 Fe-54 0 0 +47 10 1 2 Fe-56 0 0 +48 10 1 2 Fe-57 0 0 +49 10 1 2 Fe-58 0 0 +50 10 1 2 Ni-58 0 0 +51 10 1 2 Ni-60 0 0 +52 10 1 2 Ni-61 0 0 +53 10 1 2 Ni-62 0 0 +54 10 1 2 Ni-64 0 0 +55 10 1 2 Mn-55 0 0 +56 10 1 2 Si-28 0 0 +57 10 1 2 Si-29 0 0 +58 10 1 2 Si-30 0 0 +59 10 1 2 Cr-50 0 0 +60 10 1 2 Cr-52 0 0 +61 10 1 2 Cr-53 0 0 +62 10 1 2 Cr-54 0 0 +21 10 2 1 H-1 0 0 +22 10 2 1 O-16 0 0 +23 10 2 1 B-10 0 0 +24 10 2 1 B-11 0 0 +25 10 2 1 Fe-54 0 0 +26 10 2 1 Fe-56 0 0 +27 10 2 1 Fe-57 0 0 +28 10 2 1 Fe-58 0 0 +29 10 2 1 Ni-58 0 0 +30 10 2 1 Ni-60 0 0 +31 10 2 1 Ni-61 0 0 +32 10 2 1 Ni-62 0 0 +33 10 2 1 Ni-64 0 0 +34 10 2 1 Mn-55 0 0 +35 10 2 1 Si-28 0 0 +36 10 2 1 Si-29 0 0 +37 10 2 1 Si-30 0 0 +38 10 2 1 Cr-50 0 0 +39 10 2 1 Cr-52 0 0 +40 10 2 1 Cr-53 0 0 +41 10 2 1 Cr-54 0 0 +0 10 2 2 H-1 0 0 +1 10 2 2 O-16 0 0 +2 10 2 2 B-10 0 0 +3 10 2 2 B-11 0 0 +4 10 2 2 Fe-54 0 0 +5 10 2 2 Fe-56 0 0 +6 10 2 2 Fe-57 0 0 +7 10 2 2 Fe-58 0 0 +8 10 2 2 Ni-58 0 0 +9 10 2 2 Ni-60 0 0 +10 10 2 2 Ni-61 0 0 +11 10 2 2 Ni-62 0 0 +12 10 2 2 Ni-64 0 0 +13 10 2 2 Mn-55 0 0 +14 10 2 2 Si-28 0 0 +15 10 2 2 Si-29 0 0 +16 10 2 2 Si-30 0 0 +17 10 2 2 Cr-50 0 0 +18 10 2 2 Cr-52 0 0 +19 10 2 2 Cr-53 0 0 +20 10 2 2 Cr-54 0 0 material group out nuclide mean std. dev. +21 10 1 H-1 0 0 +22 10 1 O-16 0 0 +23 10 1 B-10 0 0 +24 10 1 B-11 0 0 +25 10 1 Fe-54 0 0 +26 10 1 Fe-56 0 0 +27 10 1 Fe-57 0 0 +28 10 1 Fe-58 0 0 +29 10 1 Ni-58 0 0 +30 10 1 Ni-60 0 0 +31 10 1 Ni-61 0 0 +32 10 1 Ni-62 0 0 +33 10 1 Ni-64 0 0 +34 10 1 Mn-55 0 0 +35 10 1 Si-28 0 0 +36 10 1 Si-29 0 0 +37 10 1 Si-30 0 0 +38 10 1 Cr-50 0 0 +39 10 1 Cr-52 0 0 +40 10 1 Cr-53 0 0 +41 10 1 Cr-54 0 0 +0 10 2 H-1 0 0 +1 10 2 O-16 0 0 +2 10 2 B-10 0 0 +3 10 2 B-11 0 0 +4 10 2 Fe-54 0 0 +5 10 2 Fe-56 0 0 +6 10 2 Fe-57 0 0 +7 10 2 Fe-58 0 0 +8 10 2 Ni-58 0 0 +9 10 2 Ni-60 0 0 +10 10 2 Ni-61 0 0 +11 10 2 Ni-62 0 0 +12 10 2 Ni-64 0 0 +13 10 2 Mn-55 0 0 +14 10 2 Si-28 0 0 +15 10 2 Si-29 0 0 +16 10 2 Si-30 0 0 +17 10 2 Cr-50 0 0 +18 10 2 Cr-52 0 0 +19 10 2 Cr-53 0 0 +20 10 2 Cr-54 0 0 material group in nuclide mean std. dev. +9 11 1 H-1 0.138558 0.260695 +10 11 1 O-16 0.042575 0.049271 +11 11 1 B-10 0.000000 0.000000 +12 11 1 B-11 0.000000 0.000000 +13 11 1 Zr-90 0.041034 0.049102 +14 11 1 Zr-91 0.027328 0.021092 +15 11 1 Zr-92 0.009788 0.009282 +16 11 1 Zr-94 0.043543 0.036697 +17 11 1 Zr-96 0.000000 0.000000 +0 11 2 H-1 0.824153 0.917955 +1 11 2 O-16 0.041986 0.060727 +2 11 2 B-10 0.048216 0.042726 +3 11 2 B-11 0.000000 0.000000 +4 11 2 Zr-90 0.048596 0.067712 +5 11 2 Zr-91 0.000000 0.000000 +6 11 2 Zr-92 0.000000 0.000000 +7 11 2 Zr-94 0.043195 0.041363 +8 11 2 Zr-96 0.000000 0.000000 material group in nuclide mean std. dev. +9 11 1 H-1 0 0 +10 11 1 O-16 0 0 +11 11 1 B-10 0 0 +12 11 1 B-11 0 0 +13 11 1 Zr-90 0 0 +14 11 1 Zr-91 0 0 +15 11 1 Zr-92 0 0 +16 11 1 Zr-94 0 0 +17 11 1 Zr-96 0 0 +0 11 2 H-1 0 0 +1 11 2 O-16 0 0 +2 11 2 B-10 0 0 +3 11 2 B-11 0 0 +4 11 2 Zr-90 0 0 +5 11 2 Zr-91 0 0 +6 11 2 Zr-92 0 0 +7 11 2 Zr-94 0 0 +8 11 2 Zr-96 0 0 material group in group out nuclide mean std. dev. +27 11 1 1 H-1 0.111411 0.247294 +28 11 1 1 O-16 0.042575 0.049271 +29 11 1 1 B-10 0.000000 0.000000 +30 11 1 1 B-11 0.000000 0.000000 +31 11 1 1 Zr-90 0.041034 0.049102 +32 11 1 1 Zr-91 0.027328 0.021092 +33 11 1 1 Zr-92 0.009788 0.009282 +34 11 1 1 Zr-94 0.043543 0.036697 +35 11 1 1 Zr-96 0.000000 0.000000 +18 11 1 2 H-1 0.027147 0.020009 +19 11 1 2 O-16 0.000000 0.000000 +20 11 1 2 B-10 0.000000 0.000000 +21 11 1 2 B-11 0.000000 0.000000 +22 11 1 2 Zr-90 0.000000 0.000000 +23 11 1 2 Zr-91 0.000000 0.000000 +24 11 1 2 Zr-92 0.000000 0.000000 +25 11 1 2 Zr-94 0.000000 0.000000 +26 11 1 2 Zr-96 0.000000 0.000000 +9 11 2 1 H-1 0.000000 0.000000 +10 11 2 1 O-16 0.000000 0.000000 +11 11 2 1 B-10 0.000000 0.000000 +12 11 2 1 B-11 0.000000 0.000000 +13 11 2 1 Zr-90 0.000000 0.000000 +14 11 2 1 Zr-91 0.000000 0.000000 +15 11 2 1 Zr-92 0.000000 0.000000 +16 11 2 1 Zr-94 0.000000 0.000000 +17 11 2 1 Zr-96 0.000000 0.000000 +0 11 2 2 H-1 0.824153 0.917955 +1 11 2 2 O-16 0.041986 0.060727 +2 11 2 2 B-10 0.000000 0.000000 +3 11 2 2 B-11 0.000000 0.000000 +4 11 2 2 Zr-90 0.048596 0.067712 +5 11 2 2 Zr-91 0.000000 0.000000 +6 11 2 2 Zr-92 0.000000 0.000000 +7 11 2 2 Zr-94 0.043195 0.041363 +8 11 2 2 Zr-96 0.000000 0.000000 material group out nuclide mean std. dev. +9 11 1 H-1 0 0 +10 11 1 O-16 0 0 +11 11 1 B-10 0 0 +12 11 1 B-11 0 0 +13 11 1 Zr-90 0 0 +14 11 1 Zr-91 0 0 +15 11 1 Zr-92 0 0 +16 11 1 Zr-94 0 0 +17 11 1 Zr-96 0 0 +0 11 2 H-1 0 0 +1 11 2 O-16 0 0 +2 11 2 B-10 0 0 +3 11 2 B-11 0 0 +4 11 2 Zr-90 0 0 +5 11 2 Zr-91 0 0 +6 11 2 Zr-92 0 0 +7 11 2 Zr-94 0 0 +8 11 2 Zr-96 0 0 material group in nuclide mean std. dev. +9 12 1 H-1 0.151924 0.200147 +10 12 1 O-16 0.039280 0.026086 +11 12 1 B-10 0.000000 0.000000 +12 12 1 B-11 0.000000 0.000000 +13 12 1 Zr-90 0.017578 0.022079 +14 12 1 Zr-91 0.039984 0.025285 +15 12 1 Zr-92 0.001172 0.006230 +16 12 1 Zr-94 0.001668 0.005966 +17 12 1 Zr-96 0.004328 0.005325 +0 12 2 H-1 0.942412 0.866849 +1 12 2 O-16 0.047438 0.048161 +2 12 2 B-10 0.041655 0.031202 +3 12 2 B-11 0.000000 0.000000 +4 12 2 Zr-90 0.021193 0.017456 +5 12 2 Zr-91 0.007901 0.009268 +6 12 2 Zr-92 0.009422 0.012802 +7 12 2 Zr-94 0.043324 0.027551 +8 12 2 Zr-96 0.000000 0.000000 material group in nuclide mean std. dev. +9 12 1 H-1 0 0 +10 12 1 O-16 0 0 +11 12 1 B-10 0 0 +12 12 1 B-11 0 0 +13 12 1 Zr-90 0 0 +14 12 1 Zr-91 0 0 +15 12 1 Zr-92 0 0 +16 12 1 Zr-94 0 0 +17 12 1 Zr-96 0 0 +0 12 2 H-1 0 0 +1 12 2 O-16 0 0 +2 12 2 B-10 0 0 +3 12 2 B-11 0 0 +4 12 2 Zr-90 0 0 +5 12 2 Zr-91 0 0 +6 12 2 Zr-92 0 0 +7 12 2 Zr-94 0 0 +8 12 2 Zr-96 0 0 material group in group out nuclide mean std. dev. +27 12 1 1 H-1 0.122301 0.187298 +28 12 1 1 O-16 0.039280 0.026086 +29 12 1 1 B-10 0.000000 0.000000 +30 12 1 1 B-11 0.000000 0.000000 +31 12 1 1 Zr-90 0.017578 0.022079 +32 12 1 1 Zr-91 0.039984 0.025285 +33 12 1 1 Zr-92 0.001172 0.006230 +34 12 1 1 Zr-94 0.001668 0.005966 +35 12 1 1 Zr-96 0.004328 0.005325 +18 12 1 2 H-1 0.029622 0.017760 +19 12 1 2 O-16 0.000000 0.000000 +20 12 1 2 B-10 0.000000 0.000000 +21 12 1 2 B-11 0.000000 0.000000 +22 12 1 2 Zr-90 0.000000 0.000000 +23 12 1 2 Zr-91 0.000000 0.000000 +24 12 1 2 Zr-92 0.000000 0.000000 +25 12 1 2 Zr-94 0.000000 0.000000 +26 12 1 2 Zr-96 0.000000 0.000000 +9 12 2 1 H-1 0.000000 0.000000 +10 12 2 1 O-16 0.000000 0.000000 +11 12 2 1 B-10 0.000000 0.000000 +12 12 2 1 B-11 0.000000 0.000000 +13 12 2 1 Zr-90 0.000000 0.000000 +14 12 2 1 Zr-91 0.000000 0.000000 +15 12 2 1 Zr-92 0.000000 0.000000 +16 12 2 1 Zr-94 0.000000 0.000000 +17 12 2 1 Zr-96 0.000000 0.000000 +0 12 2 2 H-1 0.942412 0.866849 +1 12 2 2 O-16 0.047438 0.048161 +2 12 2 2 B-10 0.000000 0.000000 +3 12 2 2 B-11 0.000000 0.000000 +4 12 2 2 Zr-90 0.021193 0.017456 +5 12 2 2 Zr-91 0.007901 0.009268 +6 12 2 2 Zr-92 0.009422 0.012802 +7 12 2 2 Zr-94 0.043324 0.027551 +8 12 2 2 Zr-96 0.000000 0.000000 material group out nuclide mean std. dev. +9 12 1 H-1 0 0 +10 12 1 O-16 0 0 +11 12 1 B-10 0 0 +12 12 1 B-11 0 0 +13 12 1 Zr-90 0 0 +14 12 1 Zr-91 0 0 +15 12 1 Zr-92 0 0 +16 12 1 Zr-94 0 0 +17 12 1 Zr-96 0 0 +0 12 2 H-1 0 0 +1 12 2 O-16 0 0 +2 12 2 B-10 0 0 +3 12 2 B-11 0 0 +4 12 2 Zr-90 0 0 +5 12 2 Zr-91 0 0 +6 12 2 Zr-92 0 0 +7 12 2 Zr-94 0 0 +8 12 2 Zr-96 0 0 \ No newline at end of file diff --git a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py index 637afc0b6..173043cf0 100644 --- a/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py +++ b/tests/test_mgxs_library_nuclides/test_mgxs_library_nuclides.py @@ -33,10 +33,10 @@ class MGXSTestHarness(PyAPITestHarness): # Initialize a tallies file self._input_set.tallies = openmc.TalliesFile() - self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=True) + self.mgxs_lib.add_to_tallies_file(self._input_set.tallies, merge=False) self._input_set.tallies.export_to_xml() - def _get_results(self, hash_output=True): + def _get_results(self, hash_output=False): """Digest info in the statepoint and return as a string.""" # Read the statepoint file. @@ -53,7 +53,7 @@ class MGXSTestHarness(PyAPITestHarness): # Build a string from Pandas Dataframe for each MGXS outstr = '' - for domain in sorted(self.mgxs_lib.domains): + for domain in self.mgxs_lib.domains: for mgxs_type in self.mgxs_lib.mgxs_types: mgxs = self.mgxs_lib.get_mgxs(domain, mgxs_type) df = mgxs.get_pandas_dataframe() diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 9435ccbbc..79d884cf1 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -320,6 +320,9 @@ class PyAPITestHarness(TestHarness): outstr = '\n'.join([open(fname).read() for fname in xmls if os.path.exists(fname)]) + if 'MGXSTestHarness' in str(type(self)): + print(outstr) + sha512 = hashlib.sha512() sha512.update(outstr.encode('utf-8')) outstr = sha512.hexdigest() @@ -339,6 +342,9 @@ class PyAPITestHarness(TestHarness): """Make sure the current inputs agree with the _true standard.""" compare = filecmp.cmp('inputs_test.dat', 'inputs_true.dat') if not compare: + f = open('inputs_test.dat') + for line in f.readlines(): print(line) + f.close() os.rename('inputs_test.dat', 'inputs_error.dat') assert compare, 'Input files are broken.' From c8ec70946dbf1c7473c14b340b8232eb4c8176d7 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 21 Oct 2015 08:31:05 -0400 Subject: [PATCH 111/130] Removed print debug statements from test suite --- tests/run_tests.py | 2 -- tests/test_track_output/results_test.dat | 9 +++++++++ tests/testing_harness.py | 3 --- 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 tests/test_track_output/results_test.dat diff --git a/tests/run_tests.py b/tests/run_tests.py index 1377c966c..338732c14 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -470,8 +470,6 @@ for key in iter(tests): logfilename = os.path.splitext(logfilename)[0] logfilename = logfilename + '_{0}.log'.format(test.name) shutil.copy(logfile[0], logfilename) - print(logfilename) - with open(logfilename) as fh: print(fh.read()) # Clear build directory and remove binary and hdf5 files shutil.rmtree('build', ignore_errors=True) diff --git a/tests/test_track_output/results_test.dat b/tests/test_track_output/results_test.dat new file mode 100644 index 000000000..6ded87a0e --- /dev/null +++ b/tests/test_track_output/results_test.dat @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/testing_harness.py b/tests/testing_harness.py index 79d884cf1..ed89f7694 100644 --- a/tests/testing_harness.py +++ b/tests/testing_harness.py @@ -320,9 +320,6 @@ class PyAPITestHarness(TestHarness): outstr = '\n'.join([open(fname).read() for fname in xmls if os.path.exists(fname)]) - if 'MGXSTestHarness' in str(type(self)): - print(outstr) - sha512 = hashlib.sha512() sha512.update(outstr.encode('utf-8')) outstr = sha512.hexdigest() From 2f23814fa6f29c2ecbb32d5ebb045b2159ca785e Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 21 Oct 2015 09:29:01 -0400 Subject: [PATCH 112/130] Revised __init__.py for openmc.mgxs to be Python 3 compatible --- openmc/mgxs/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openmc/mgxs/__init__.py b/openmc/mgxs/__init__.py index 91eb811f4..4fcf8b6ae 100644 --- a/openmc/mgxs/__init__.py +++ b/openmc/mgxs/__init__.py @@ -1,3 +1,3 @@ -from groups import EnergyGroups -from library import Library -from mgxs import * +from openmc.mgxs.groups import EnergyGroups +from openmc.mgxs.library import Library +from openmc.mgxs.mgxs import * From 13f3045e886f7ce9e15ee8a1e18eee45e56a3a43 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 21 Oct 2015 10:44:36 -0400 Subject: [PATCH 113/130] Made tally division Python 3 compatible --- openmc/tallies.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openmc/tallies.py b/openmc/tallies.py index 3f964e102..67ea53c32 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1,3 +1,5 @@ +from __future__ import division + from collections import Iterable, defaultdict import copy import os @@ -2020,7 +2022,7 @@ class Tally(object): return new_tally - def __div__(self, other): + def __truediv__(self, other): """Divides this tally by another tally or scalar value. This method builds a new tally with data that is the dividend of @@ -2525,7 +2527,7 @@ class Tally(object): # by which the "base" indices should be repeated to account for all # other filter bins in the diagonalized tally indices = np.arange(0, new_filter.num_bins**2, new_filter.num_bins+1) - diag_factor = self.num_filter_bins / new_filter.num_bins + diag_factor = int(self.num_filter_bins / new_filter.num_bins) diag_indices = np.zeros(self.num_filter_bins, dtype=np.int) # Determine the filter indices along the new "diagonal" From f9aa2b4904429ea0d9aa116bdaf0cc39f8507dad Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 21 Oct 2015 12:10:04 -0400 Subject: [PATCH 114/130] Now import division from __future__ in mgxs.py --- openmc/mgxs/mgxs.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 83b85bf50..485d7cf42 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1,3 +1,5 @@ +from __future__ import division + from collections import Iterable, OrderedDict from numbers import Integral import os @@ -2216,4 +2218,4 @@ class Chi(MGXS): df['mean'] *= np.tile(densities, tile_factor) df['std. dev.'] *= np.tile(densities, tile_factor) - return df \ No newline at end of file + return df From 02296cbd7785fcface071ac91a6620fe7c4ff48e Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 21 Oct 2015 12:59:07 -0400 Subject: [PATCH 115/130] Now properly indexing ValuesView in MGXS.num_subdomains --- openmc/mgxs/library.py | 2 +- openmc/mgxs/mgxs.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 0178745ef..32f9c937a 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -616,4 +616,4 @@ class Library(object): full_filename = full_filename.replace(' ', '-') # Load and return pickled Library object - return pickle.load(open(full_filename, 'rb')) \ No newline at end of file + return pickle.load(open(full_filename, 'rb')) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 485d7cf42..775c51941 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -188,7 +188,7 @@ class MGXS(object): @property def num_subdomains(self): - tally = self.tallies.values()[0] + tally = list(self.tallies.values())[0] domain_filter = tally.find_filter(self.domain_type) return domain_filter.num_bins From 0965e20c08cca4a98edb914c88d759af9a81b5b9 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 22 Oct 2015 13:38:44 -0400 Subject: [PATCH 116/130] Made Filter.is_subset and Filter.get_bin_index routines use value thresholding for energy bins --- openmc/filter.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index bff1c62f0..3787e6705 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -331,7 +331,10 @@ class Filter(object): elif self.type != other.type: return False elif self.type in ['energy', 'energyout']: - return np.all(self.bins == other.bins) + if len(self.bins) != len(other.bins): + return False + else: + return np.allclose(self.bins, other.bins) for bin in other.bins: if bin not in self.bins: @@ -383,8 +386,12 @@ class Filter(object): # Use lower energy bound to find index for energy Filters elif self.type in ['energy', 'energyout']: - val = np.where(self.bins == filter_bin[0])[0][0] - filter_index = val + deltas = np.abs(self.bins - filter_bin[0]) / filter_bin[0] + min_delta = np.min(deltas) + if min_delta < 1E-5: + filter_index = deltas.argmin() + else: + raise ValueError # Filter bins for distribcells are "IDs" of each unique placement # of the Cell in the Geometry (integers starting at 0) @@ -748,4 +755,4 @@ class Filter(object): filter_bins = filter_bins df = pd.concat([df, pd.DataFrame({self.type : filter_bins})]) - return df \ No newline at end of file + return df From ff89950e9d302914be859d72ee0d6d403acd288f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Thu, 22 Oct 2015 13:46:41 -0400 Subject: [PATCH 117/130] Fixed bug in Filter.get_bin_index(...) for energy bins with 0.0 as the lower energy --- openmc/filter.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index 3787e6705..8c1b6500b 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -386,10 +386,10 @@ class Filter(object): # Use lower energy bound to find index for energy Filters elif self.type in ['energy', 'energyout']: - deltas = np.abs(self.bins - filter_bin[0]) / filter_bin[0] + deltas = np.abs(self.bins - filter_bin[1]) / filter_bin[1] min_delta = np.min(deltas) - if min_delta < 1E-5: - filter_index = deltas.argmin() + if min_delta < 1E-3: + filter_index = deltas.argmin() - 1 else: raise ValueError From 19d821106c2c65f4e4909c6e14e7257960ca1516 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Mon, 26 Oct 2015 09:37:59 -0400 Subject: [PATCH 118/130] Fixed merge conflict with Filter.merge(...) routine --- openmc/filter.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/openmc/filter.py b/openmc/filter.py index 51c60caf8..8a5525233 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -302,11 +302,7 @@ class Filter(object): merged_filter = copy.deepcopy(self) # Merge unique filter bins -<<<<<<< HEAD - merged_bins = list(set(list(self.bins) + list(filter.bins))) -======= merged_bins = list(set(np.concatenate((self.bins, filter.bins)))) ->>>>>>> upstream/develop merged_filter.bins = merged_bins merged_filter.num_bins = len(merged_bins) From c2a29a607dbc053f766f200e8f1de701c5536c13 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 27 Oct 2015 17:36:24 -0400 Subject: [PATCH 119/130] Python API now clears xml element trees before exporting to xml --- .../examples/multi-group-cross-sections.ipynb | 366 ++++++++++-------- openmc/geometry.py | 3 + openmc/material.py | 3 + openmc/plots.py | 3 + openmc/settings.py | 8 + openmc/tallies.py | 3 + 6 files changed, 219 insertions(+), 167 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index de7d3c2a9..cfbc68d39 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -465,8 +465,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-15 16:52:26\n", + " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", + " Date/Time: 2015-10-27 17:26:51\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -484,6 +484,7 @@ " 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", @@ -551,20 +552,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.0800E-01 seconds\n", - " Reading cross sections = 9.4000E-02 seconds\n", - " Total time in simulation = 2.4001E+01 seconds\n", - " Time in transport only = 2.3960E+01 seconds\n", - " Time in inactive batches = 2.0780E+00 seconds\n", - " Time in active batches = 2.1923E+01 seconds\n", - " Time synchronizing fission bank = 3.0000E-03 seconds\n", - " Sampling source sites = 2.0000E-03 seconds\n", - " SEND/RECV source sites = 1.0000E-03 seconds\n", + " Total time for initialization = 1.0480E+00 seconds\n", + " Reading cross sections = 3.3600E-01 seconds\n", + " Total time in simulation = 2.8493E+01 seconds\n", + " Time in transport only = 2.8402E+01 seconds\n", + " Time in inactive batches = 3.3050E+00 seconds\n", + " Time in active batches = 2.5188E+01 seconds\n", + " Time synchronizing fission bank = 6.0000E-03 seconds\n", + " Sampling source sites = 1.0000E-03 seconds\n", + " SEND/RECV source sites = 4.0000E-03 seconds\n", " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 1.0000E-02 seconds\n", - " Total time elapsed = 2.4427E+01 seconds\n", - " Calculation Rate (inactive) = 12030.8 neutrons/second\n", - " Calculation Rate (active) = 4561.42 neutrons/second\n", + " Total time for finalization = 3.0000E-03 seconds\n", + " Total time elapsed = 2.9569E+01 seconds\n", + " Calculation Rate (inactive) = 7564.30 neutrons/second\n", + " Calculation Rate (active) = 3970.14 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -679,7 +680,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1487: RuntimeWarning: invalid value encountered in divide\n" + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/tallies.py:1514: RuntimeWarning: invalid value encountered in true_divide\n" ] } ], @@ -762,7 +763,7 @@ { "data": { "text/html": [ - "
\n", + "
\n", "\n", " \n", " \n", @@ -1014,10 +1015,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ NORMAL ] Ray tracing for track segmentation...\n", - "[ NORMAL ] Dumping tracks to file...\n", + "[ NORMAL ] Importing ray tracing data from file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 1.498E-316\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 8.020E-317\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", "[ NORMAL ] Iteration 3:\tk_eff = 0.728846\tres = 4.513E-02\n", @@ -1437,8 +1437,9 @@ }, "outputs": [], "source": [ - "# Create a tally trigger set to 10% on the relative error\n", - "tally_trigger = openmc.Trigger('rel_err', 1E-1)\n", + "# Create a tally trigger set to +/- 0.01 for each tally\n", + "# used to compute the multi-group cross sections\n", + "tally_trigger = openmc.Trigger('std_dev', 1E-2)\n", "\n", "# Add the tally trigger to each of the multi-group cross section tallies\n", "for cell in openmc_cells:\n", @@ -1447,7 +1448,8 @@ " \n", "# Set the trigger to active in the \"settings.xml\" file\n", "settings_file.trigger_active = True\n", - "settings_file.trigger_max_batches = settings_file.batches * 2\n", + "settings_file.particles *= 4\n", + "settings_file.trigger_max_batches = settings_file.batches * 4\n", "settings_file.export_to_xml()" ] }, @@ -1525,8 +1527,8 @@ " Copyright: 2011-2015 Massachusetts Institute of Technology\n", " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", - " Git SHA1: 170155e8d7935b57fad57bfad6aff1034a80206e\n", - " Date/Time: 2015-10-15 16:52:53\n", + " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", + " Date/Time: 2015-10-27 17:27:22\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1544,6 +1546,7 @@ " 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", @@ -1552,58 +1555,78 @@ "\n", " Bat./Gen. k Average k \n", " ========= ======== ==================== \n", - " 1/1 1.27747 \n", - " 2/1 1.24641 \n", - " 3/1 1.23998 \n", - " 4/1 1.22236 \n", - " 5/1 1.22609 \n", - " 6/1 1.14473 \n", - " 7/1 1.21385 \n", - " 8/1 1.17205 \n", - " 9/1 1.18419 \n", - " 10/1 1.22500 \n", - " 11/1 1.24778 \n", - " 12/1 1.23680 1.24229 +/- 0.00549\n", - " 13/1 1.23752 1.24070 +/- 0.00355\n", - " 14/1 1.26918 1.24782 +/- 0.00755\n", - " 15/1 1.23346 1.24495 +/- 0.00651\n", - " 16/1 1.23687 1.24360 +/- 0.00549\n", - " 17/1 1.22006 1.24024 +/- 0.00573\n", - " 18/1 1.23162 1.23916 +/- 0.00508\n", - " 19/1 1.22456 1.23754 +/- 0.00476\n", - " 20/1 1.21237 1.23502 +/- 0.00495\n", - " 21/1 1.24915 1.23631 +/- 0.00466\n", - " 22/1 1.17014 1.23079 +/- 0.00696\n", - " 23/1 1.18388 1.22718 +/- 0.00735\n", - " 24/1 1.20614 1.22568 +/- 0.00697\n", - " 25/1 1.22888 1.22589 +/- 0.00649\n", - " 26/1 1.20734 1.22473 +/- 0.00618\n", - " 27/1 1.28731 1.22841 +/- 0.00688\n", - " 28/1 1.16533 1.22491 +/- 0.00737\n", - " 29/1 1.23361 1.22537 +/- 0.00699\n", - " 30/1 1.22054 1.22513 +/- 0.00663\n", - " 31/1 1.26417 1.22699 +/- 0.00658\n", - " 32/1 1.23181 1.22720 +/- 0.00627\n", - " 33/1 1.21074 1.22649 +/- 0.00604\n", - " 34/1 1.21642 1.22607 +/- 0.00580\n", - " 35/1 1.26934 1.22780 +/- 0.00582\n", - " 36/1 1.24095 1.22831 +/- 0.00562\n", - " 37/1 1.22300 1.22811 +/- 0.00541\n", - " 38/1 1.20875 1.22742 +/- 0.00526\n", - " 39/1 1.21748 1.22708 +/- 0.00508\n", - " 40/1 1.24938 1.22782 +/- 0.00497\n", - " 41/1 1.21652 1.22745 +/- 0.00482\n", - " 42/1 1.22642 1.22742 +/- 0.00467\n", - " 43/1 1.20158 1.22664 +/- 0.00459\n", - " 44/1 1.22475 1.22658 +/- 0.00445\n", - " 45/1 1.25199 1.22731 +/- 0.00438\n", - " 46/1 1.25905 1.22819 +/- 0.00435\n", - " 47/1 1.20490 1.22756 +/- 0.00428\n", - " 48/1 1.20016 1.22684 +/- 0.00423\n", - " 49/1 1.21094 1.22643 +/- 0.00414\n", - " 50/1 1.22919 1.22650 +/- 0.00403\n", - " Triggers satisfied for batch 50\n", + " 1/1 1.23985 \n", + " 2/1 1.24082 \n", + " 3/1 1.22031 \n", + " 4/1 1.21649 \n", + " 5/1 1.23229 \n", + " 6/1 1.21957 \n", + " 7/1 1.22515 \n", + " 8/1 1.21309 \n", + " 9/1 1.23939 \n", + " 10/1 1.23865 \n", + " 11/1 1.22776 \n", + " 12/1 1.21661 1.22219 +/- 0.00558\n", + " 13/1 1.22202 1.22213 +/- 0.00322\n", + " 14/1 1.23251 1.22473 +/- 0.00345\n", + " 15/1 1.23965 1.22771 +/- 0.00401\n", + " 16/1 1.21441 1.22549 +/- 0.00395\n", + " 17/1 1.23348 1.22663 +/- 0.00353\n", + " 18/1 1.21121 1.22471 +/- 0.00361\n", + " 19/1 1.20506 1.22252 +/- 0.00386\n", + " 20/1 1.22275 1.22255 +/- 0.00346\n", + " 21/1 1.21700 1.22204 +/- 0.00317\n", + " 22/1 1.20841 1.22091 +/- 0.00311\n", + " 23/1 1.21302 1.22030 +/- 0.00292\n", + " 24/1 1.22504 1.22064 +/- 0.00272\n", + " 25/1 1.22325 1.22081 +/- 0.00254\n", + " 26/1 1.22988 1.22138 +/- 0.00244\n", + " 27/1 1.21374 1.22093 +/- 0.00234\n", + " 28/1 1.21434 1.22056 +/- 0.00224\n", + " 29/1 1.24678 1.22194 +/- 0.00253\n", + " 30/1 1.22600 1.22215 +/- 0.00240\n", + " 31/1 1.22783 1.22242 +/- 0.00230\n", + " 32/1 1.23107 1.22281 +/- 0.00223\n", + " 33/1 1.23041 1.22314 +/- 0.00216\n", + " 34/1 1.21147 1.22266 +/- 0.00212\n", + " 35/1 1.23184 1.22302 +/- 0.00207\n", + " 36/1 1.22513 1.22310 +/- 0.00199\n", + " 37/1 1.22969 1.22335 +/- 0.00193\n", + " 38/1 1.21288 1.22297 +/- 0.00190\n", + " 39/1 1.23967 1.22355 +/- 0.00192\n", + " 40/1 1.21419 1.22324 +/- 0.00188\n", + " 41/1 1.23212 1.22352 +/- 0.00184\n", + " 42/1 1.20703 1.22301 +/- 0.00185\n", + " 43/1 1.24153 1.22357 +/- 0.00188\n", + " 44/1 1.23561 1.22392 +/- 0.00186\n", + " 45/1 1.20369 1.22335 +/- 0.00190\n", + " 46/1 1.24517 1.22395 +/- 0.00194\n", + " 47/1 1.22985 1.22411 +/- 0.00189\n", + " 48/1 1.23570 1.22442 +/- 0.00187\n", + " 49/1 1.22288 1.22438 +/- 0.00182\n", + " 50/1 1.20470 1.22389 +/- 0.00184\n", + " Triggers unsatisfied, max unc./thresh. is 1.18932 for flux in tally 10090\n", + " The estimated number of batches is 67\n", " Creating state point statepoint.050.h5...\n", + " 51/1 1.24158 1.22432 +/- 0.00185\n", + " 52/1 1.24407 1.22479 +/- 0.00186\n", + " 53/1 1.23412 1.22500 +/- 0.00183\n", + " 54/1 1.25172 1.22561 +/- 0.00189\n", + " 55/1 1.22653 1.22563 +/- 0.00185\n", + " 56/1 1.24741 1.22610 +/- 0.00187\n", + " 57/1 1.24342 1.22647 +/- 0.00186\n", + " 58/1 1.20365 1.22600 +/- 0.00189\n", + " 59/1 1.23576 1.22620 +/- 0.00186\n", + " 60/1 1.21398 1.22595 +/- 0.00184\n", + " 61/1 1.22186 1.22587 +/- 0.00180\n", + " 62/1 1.23502 1.22605 +/- 0.00178\n", + " 63/1 1.23328 1.22618 +/- 0.00175\n", + " 64/1 1.23990 1.22644 +/- 0.00173\n", + " 65/1 1.23283 1.22655 +/- 0.00171\n", + " 66/1 1.21605 1.22637 +/- 0.00169\n", + " 67/1 1.22322 1.22631 +/- 0.00166\n", + " Triggers satisfied for batch 67\n", + " Creating state point statepoint.067.h5...\n", "\n", " ===========================================================================\n", " ======================> SIMULATION FINISHED <======================\n", @@ -1612,27 +1635,27 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.1640E+00 seconds\n", - " Reading cross sections = 2.4900E-01 seconds\n", - " Total time in simulation = 1.2029E+02 seconds\n", - " Time in transport only = 1.2022E+02 seconds\n", - " Time in inactive batches = 1.1199E+01 seconds\n", - " Time in active batches = 1.0909E+02 seconds\n", - " Time synchronizing fission bank = 1.2000E-02 seconds\n", - " Sampling source sites = 6.0000E-03 seconds\n", - " SEND/RECV source sites = 5.0000E-03 seconds\n", + " Total time for initialization = 1.2520E+00 seconds\n", + " Reading cross sections = 2.9400E-01 seconds\n", + " Total time in simulation = 3.6113E+02 seconds\n", + " Time in transport only = 3.6098E+02 seconds\n", + " Time in inactive batches = 2.7487E+01 seconds\n", + " Time in active batches = 3.3365E+02 seconds\n", + " Time synchronizing fission bank = 3.4000E-02 seconds\n", + " Sampling source sites = 2.2000E-02 seconds\n", + " SEND/RECV source sites = 1.2000E-02 seconds\n", " Time accumulating tallies = 2.0000E-03 seconds\n", - " Total time for finalization = 2.8000E-02 seconds\n", - " Total time elapsed = 1.2151E+02 seconds\n", - " Calculation Rate (inactive) = 2232.34 neutrons/second\n", - " Calculation Rate (active) = 916.683 neutrons/second\n", + " Total time for finalization = 1.5000E-02 seconds\n", + " Total time elapsed = 3.6247E+02 seconds\n", + " Calculation Rate (inactive) = 3638.08 neutrons/second\n", + " Calculation Rate (active) = 1198.88 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", - " k-effective (Collision) = 1.22693 +/- 0.00341\n", - " k-effective (Track-length) = 1.22650 +/- 0.00403\n", - " k-effective (Absorption) = 1.22829 +/- 0.00354\n", - " Combined k-effective = 1.22762 +/- 0.00298\n", + " k-effective (Collision) = 1.22548 +/- 0.00143\n", + " k-effective (Track-length) = 1.22631 +/- 0.00166\n", + " k-effective (Absorption) = 1.22204 +/- 0.00138\n", + " Combined k-effective = 1.22386 +/- 0.00114\n", " Leakage Fraction = 0.00000 +/- 0.00000\n", "\n" ] @@ -1680,7 +1703,7 @@ "outputs": [], "source": [ "# Load the last statepoint and summary files\n", - "sp = openmc.StatePoint('statepoint.050.h5')\n", + "sp = openmc.StatePoint('statepoint.067.h5')\n", "su = openmc.Summary('summary.h5')\n", "sp.link_with_summary(su)" ] @@ -1745,25 +1768,25 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU-235\n", "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t3.30e+00 +/- 5.91e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t3.97e+00 +/- 4.03e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t5.48e+01 +/- 5.56e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.84e+01 +/- 8.48e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 1.25e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 7.98e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 5.73e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t3.31e+00 +/- 2.13e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t3.96e+00 +/- 1.54e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.51e+01 +/- 2.36e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t8.83e+01 +/- 3.76e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t2.89e+02 +/- 4.10e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t4.49e+02 +/- 4.94e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t6.87e+02 +/- 3.44e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t1.44e+03 +/- 2.37e-01%\n", "\n", "\tNuclide =\tU-238\n", "\tCross Sections [barns]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 6.74e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.22e-03 +/- 8.28e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t4.75e-04 +/- 7.97e+00%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.53e-06 +/- 7.56e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 1.22e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 7.97e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t4.25e-05 +/- 5.72e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t1.06e+00 +/- 2.47e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.21e-03 +/- 3.07e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t5.72e-04 +/- 3.47e+00%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t6.54e-06 +/- 3.29e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.07e-05 +/- 4.20e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.55e-05 +/- 4.94e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.30e-05 +/- 3.44e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t4.24e-05 +/- 2.37e-01%\n", "\n", "\n", "\n" @@ -1798,14 +1821,14 @@ "\tDomain Type =\tcell\n", "\tDomain ID =\t10000\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [0.821 - 20.0 MeV]:\t2.52e-02 +/- 6.42e-01%\n", - " Group 2 [0.00553 - 0.821 MeV]:\t1.52e-03 +/- 3.96e-01%\n", - " Group 3 [4e-06 - 0.00553 MeV]:\t2.06e-02 +/- 5.56e-01%\n", - " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.32e-02 +/- 8.48e-01%\n", - " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 1.25e+00%\n", - " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 1.09e+00%\n", - " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 7.98e-01%\n", - " Group 8 [0.0 - 5.8e-08 MeV]:\t5.41e-01 +/- 5.73e-01%\n", + " Group 1 [0.821 - 20.0 MeV]:\t2.53e-02 +/- 2.35e-01%\n", + " Group 2 [0.00553 - 0.821 MeV]:\t1.51e-03 +/- 1.51e-01%\n", + " Group 3 [4e-06 - 0.00553 MeV]:\t2.07e-02 +/- 2.36e-01%\n", + " Group 4 [6.25e-07 - 4e-06 MeV]:\t3.31e-02 +/- 3.76e-01%\n", + " Group 5 [2.8e-07 - 6.25e-07 MeV]:\t1.09e-01 +/- 4.10e-01%\n", + " Group 6 [1.4e-07 - 2.8e-07 MeV]:\t1.69e-01 +/- 4.94e-01%\n", + " Group 7 [5.8e-08 - 1.4e-07 MeV]:\t2.58e-01 +/- 3.44e-01%\n", + " Group 8 [0.0 - 5.8e-08 MeV]:\t5.40e-01 +/- 2.37e-01%\n", "\n", "\n", "\n" @@ -1834,7 +1857,7 @@ { "data": { "text/html": [ - "
\n", + "
\n", "
\n", " \n", " \n", @@ -1854,8 +1877,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1863,8 +1886,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1872,8 +1895,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1881,8 +1904,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1890,8 +1913,8 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -1944,11 +1967,11 @@ ], "text/plain": [ " cell group in group out nuclide mean std. dev.\n", - "126 10002 1 1 H-1 0.234877 0.010096\n", - "127 10002 1 1 O-16 1.560098 0.017801\n", - "124 10002 1 2 H-1 1.587815 0.007847\n", - "125 10002 1 2 O-16 0.288236 0.004397\n", - "122 10002 1 3 H-1 0.010122 0.000513\n", + "126 10002 1 1 H-1 0.233896 0.004410\n", + "127 10002 1 1 O-16 1.564488 0.007478\n", + "124 10002 1 2 H-1 1.589975 0.003196\n", + "125 10002 1 2 O-16 0.283697 0.001986\n", + "122 10002 1 3 H-1 0.010846 0.000225\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", @@ -2011,9 +2034,9 @@ "outputs": [ { "data": { - "image/png": "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\ned7lsJ91IAAAAABJRU5ErkJggg==\n", + "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2081,18 +2104,18 @@ "\tDomain ID =\t10000\n", "\tNuclide =\tU-235\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t7.91e-03 +/- 1.22e+00%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 4.98e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t7.81e-03 +/- 4.72e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.82e-01 +/- 2.09e-01%\n", "\n", "\tNuclide =\tU-238\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 4.04e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t2.53e-01 +/- 5.85e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t2.17e-01 +/- 1.58e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t2.54e-01 +/- 2.46e-01%\n", "\n", "\tNuclide =\tO-16\n", "\tCross Sections [cm^-1]:\n", - " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 4.10e-01%\n", - " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 6.46e-01%\n", + " Group 1 [6.25e-07 - 20.0 MeV]:\t1.45e-01 +/- 1.73e-01%\n", + " Group 2 [0.0 - 6.25e-07 MeV]:\t1.75e-01 +/- 2.64e-01%\n", "\n", "\n", "\n" @@ -2113,7 +2136,7 @@ { "data": { "text/html": [ - "
\n", + "
\n", "
11H-10.2348770.0100960.2338960.004410
12711O-161.5600980.0178011.5644880.007478
12412H-11.5878150.0078471.5899750.003196
12512O-160.2882360.0043970.2836970.001986
12213H-10.0101220.0005130.0108460.000225
123
\n", " \n", " \n", @@ -2131,48 +2154,48 @@ " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
100001U-23521.0952560.25778720.8327040.098310
4100001U-2389.5893230.0387569.5744350.015117
5100001O-163.1591010.0129393.1619190.005466
0100002U-235485.5135302.418761484.1335131.011870
1100002U-23811.1788440.06542811.2151520.027565
2100002O-163.8000270.0245383.7988330.010031
\n", @@ -2180,12 +2203,12 @@ ], "text/plain": [ " cell group in nuclide mean std. dev.\n", - "3 10000 1 U-235 21.095256 0.257787\n", - "4 10000 1 U-238 9.589323 0.038756\n", - "5 10000 1 O-16 3.159101 0.012939\n", - "0 10000 2 U-235 485.513530 2.418761\n", - "1 10000 2 U-238 11.178844 0.065428\n", - "2 10000 2 O-16 3.800027 0.024538" + "3 10000 1 U-235 20.832704 0.098310\n", + "4 10000 1 U-238 9.574435 0.015117\n", + "5 10000 1 O-16 3.161919 0.005466\n", + "0 10000 2 U-235 484.133513 1.011870\n", + "1 10000 2 U-238 11.215152 0.027565\n", + "2 10000 2 O-16 3.798833 0.010031" ] }, "execution_count": 47, @@ -2321,9 +2344,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.227616\n", - "openmoc keff = 1.225322\n", - "bias [pcm]: -229.3\n" + "openmc keff = 1.223863\n", + "openmoc keff = 1.222517\n", + "bias [pcm]: -134.7\n" ] } ], @@ -2415,9 +2438,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "openmc keff = 1.227616\n", - "openmoc keff = 1.227093\n", - "bias [pcm]: -52.3\n" + "openmc keff = 1.223863\n", + "openmoc keff = 1.225691\n", + "bias [pcm]: 182.7\n" ] } ], @@ -2442,6 +2465,15 @@ "* Spatial discretization of OpenMOC's mesh\n", "* Constant-in-angle multi-group cross sections" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/openmc/geometry.py b/openmc/geometry.py index b57ac5623..e848e0cdd 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -208,6 +208,9 @@ class GeometryFile(object): # Clear OpenMC written IDs used to optimize XML generation openmc.universe.WRITTEN_IDS = {} + # Reset xml element tree + self._geometry_file.clear() + root_universe = self.geometry.root_universe root_universe.create_xml_subelement(self._geometry_file) diff --git a/openmc/material.py b/openmc/material.py index 4c3a63696..41a67f6b7 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -581,6 +581,9 @@ class MaterialsFile(object): """ + # Reset xml element tree + self._materials_file.clear() + self._create_material_subelements() # Clean the indentation in the file to be user-readable diff --git a/openmc/plots.py b/openmc/plots.py index 07da4d855..6cff095ec 100644 --- a/openmc/plots.py +++ b/openmc/plots.py @@ -363,6 +363,9 @@ class PlotsFile(object): """ + # Reset xml element tree + self._plots_file.clear() + self._create_plot_subelements() # Clean the indentation in the file to be user-readable diff --git a/openmc/settings.py b/openmc/settings.py index 981166af5..dbf031e28 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -1178,6 +1178,14 @@ class SettingsFile(object): """ + # Reset xml element tree + self._settings_file.clear() + self._source_subelement = None + self._trigger_subelement = None + self._eigenvalue_subelement = None + self._source_element = None + + self._create_eigenvalue_subelement() self._create_source_subelement() self._create_output_subelement() diff --git a/openmc/tallies.py b/openmc/tallies.py index b2ae4b000..03aa8e3a7 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -2715,6 +2715,9 @@ class TalliesFile(object): """ + # Reset xml element tree + self._tallies_file.clear() + self._create_mesh_subelements() self._create_tally_subelements() From 93b692d2ddfdca786b21d5a375a2eb1804e286e6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Tue, 27 Oct 2015 17:37:22 -0400 Subject: [PATCH 120/130] Added newline to CrossFilter.__repr__() routine --- openmc/cross.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openmc/cross.py b/openmc/cross.py index b91344671..435557ede 100644 --- a/openmc/cross.py +++ b/openmc/cross.py @@ -298,6 +298,7 @@ class CrossFilter(object): string += '{0: <16}{1}{2}\n'.format('\tType', '=\t', filter_type) string += '{0: <16}{1}{2}\n'.format('\tBins', '=\t', filter_bins) return string + def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -461,4 +462,4 @@ class CrossFilter(object): right_df = right_df.astype(str) df = '(' + left_df + ' ' + self.binary_op + ' ' + right_df + ')' - return df \ No newline at end of file + return df From 31c1d39078b8320028128a33f5b83dc01e7c3379 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 08:22:16 -0400 Subject: [PATCH 121/130] Updated ipython notebook for mgxs per comments from @paulromano --- .../examples/multi-group-cross-sections.ipynb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index cfbc68d39..a6dda13d6 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -288,7 +288,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MGXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of generic and abstract `MGXS` class:\n", + "We can now use the fine and coarse `EnergyGroups` objects, along with our previously created materials and geometry, to instantiate some `MGXS` objects from the `openmc.mgxs` module. In particular, the following are subclasses of the generic and abstract `MGXS` class:\n", "\n", "* `TotalXS`\n", "* `TransportXS`\n", @@ -666,7 +666,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/pandas-dataframes.html) to compute cross sections from the tally data." + "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/tally-arithmetic.html) to compute cross sections from the tally data." ] }, { @@ -1443,7 +1443,7 @@ "\n", "# Add the tally trigger to each of the multi-group cross section tallies\n", "for cell in openmc_cells:\n", - " for mgxs_type in xs_library[cell.id].keys():\n", + " for mgxs_type in xs_library[cell.id]:\n", " xs_library[cell.id][mgxs_type].tally_trigger = tally_trigger\n", " \n", "# Set the trigger to active in the \"settings.xml\" file\n", @@ -1473,7 +1473,7 @@ "\n", "# Iterate over all cells and cross section types\n", "for cell in openmc_cells:\n", - " for rxn_type in xs_library[cell.id].keys():\n", + " for rxn_type in xs_library[cell.id]:\n", "\n", " # Set the cross sections domain type to the cell\n", " xs_library[cell.id][rxn_type].domain = cell\n", @@ -1725,7 +1725,7 @@ "source": [ "# Iterate over all cells and cross section types\n", "for cell in openmc_cells:\n", - " for rxn_type in xs_library[cell.id].keys():\n", + " for rxn_type in xs_library[cell.id]:\n", " xs_library[cell.id][rxn_type].load_from_statepoint(sp)\n", " xs_library[cell.id][rxn_type].compute_xs()" ] From e57ca85a7c99e2fc571d1bedc2832104cc3a513f Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 08:24:23 -0400 Subject: [PATCH 122/130] Added num_groups to the docstring for openmc.mgxs.EnergyGroups --- openmc/mgxs/groups.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index db01e6125..3436c0e03 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -24,6 +24,8 @@ class EnergyGroups(object): ---------- group_edges : Iterable of Real The energy group boundaries [MeV] + num_group : Integral + The number of energy groups """ @@ -233,4 +235,4 @@ class EnergyGroups(object): condensed_groups = EnergyGroups() condensed_groups.group_edges = group_edges - return condensed_groups \ No newline at end of file + return condensed_groups From 0862adfcb7724c5a459029c5f13e01540c72d837 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 28 Oct 2015 08:25:21 -0500 Subject: [PATCH 123/130] Fix MGXS documentation problems --- docs/source/pythonapi/mgxs.rst | 2 +- docs/source/pythonapi/opencg_compatible.rst | 10 +++++----- openmc/filter.py | 5 +++-- openmc/mgxs/library.py | 4 +--- openmc/mgxs/mgxs.py | 12 +++++------- openmc/tallies.py | 2 +- 6 files changed, 16 insertions(+), 19 deletions(-) diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst index 04e2a99de..28f125a52 100644 --- a/docs/source/pythonapi/mgxs.rst +++ b/docs/source/pythonapi/mgxs.rst @@ -5,4 +5,4 @@ Multi-Group Cross Sections ========================== .. automodule:: openmc.mgxs.mgxs - :members: MGXS + :members: diff --git a/docs/source/pythonapi/opencg_compatible.rst b/docs/source/pythonapi/opencg_compatible.rst index c8ba82e8c..c807e19cc 100644 --- a/docs/source/pythonapi/opencg_compatible.rst +++ b/docs/source/pythonapi/opencg_compatible.rst @@ -1,8 +1,8 @@ -.. _pythonapi_openmc_mgxs: +.. _pythonapi_opencg_compatible: -========================== -Multi-Group Cross Sections -========================== +==================== +OpenCG Compatibility +==================== -.. automodule:: openmc.mgxs.mgxs +.. automodule:: openmc.opencg_compatible :members: diff --git a/openmc/filter.py b/openmc/filter.py index 8a5525233..5c0343df7 100644 --- a/openmc/filter.py +++ b/openmc/filter.py @@ -511,8 +511,9 @@ class Filter(object): surface, material or universe ID corresponding to each filter bin. For 'distribcell' filters, the DataFrame either includes: - 1) a single column with the cell instance IDs (without summary info) - 2) separate columns for the cell IDs, universe IDs, and lattice IDs + + 1. a single column with the cell instance IDs (without summary info) + 2. separate columns for the cell IDs, universe IDs, and lattice IDs and x,y,z cell indices corresponding to each (with summary info). For 'energy' and 'energyout' filters, the DataFrame include a single diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 32f9c937a..c6206c2d6 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -330,9 +330,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', 'absorption', 'capture', 'fission', - 'nu-fission', 'scatter', 'nu-scatter', 'scatter matrix', - 'nu-scatter matrix', 'chi'} + mgxs_type : {'total', 'transport', 'absorption', 'capture', 'fission', 'nu-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'chi'} The type of multi-group cross section object to return Returns diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 775c51941..eb600f046 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -247,9 +247,7 @@ class MGXS(object): Parameters ---------- - mgxs_type : {'total', 'transport', 'absorption', 'capture', 'fission', - 'nu-fission', 'scatter', 'nu-scatter', 'scatter matrix', - 'nu-scatter matrix', 'chi'} + mgxs_type : {'total', 'transport', 'absorption', 'capture', 'fission', 'nu-fission', 'scatter', 'nu-scatter', 'scatter matrix', 'nu-scatter matrix', 'chi'} The type of multi-group cross section object to return domain : Material or Cell or Universe The domain for spatial homogenization @@ -327,8 +325,8 @@ class MGXS(object): """Get the atomic number density in units of atoms/b-cm for a nuclide in the cross section's spatial domain. - Paramters - --------- + Parameters + ---------- nuclide : str A nuclide name string (e.g., 'U-235') @@ -362,8 +360,8 @@ class MGXS(object): """Get an array of atomic number densities in units of atom/b-cm for all nuclides in the cross section's spatial domain. - Paramters - --------- + Parameters + ---------- 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 atom densities for all nuclides diff --git a/openmc/tallies.py b/openmc/tallies.py index 03aa8e3a7..c9e4854e2 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1269,7 +1269,7 @@ class Tally(object): correspond directly to the two filters with two and four bins. Parameters - --------- + ---------- value : str A string for the type of value to return - 'mean' (default), 'std_dev', 'rel_err', 'sum', or 'sum_sq' are accepted From b52fe4505540346d4647c8ebb7c043cacb86be1d Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 28 Oct 2015 08:41:05 -0500 Subject: [PATCH 124/130] Make sure MGXS appears first in documentation --- docs/source/pythonapi/mgxs.rst | 35 +++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst index 28f125a52..82bfdd275 100644 --- a/docs/source/pythonapi/mgxs.rst +++ b/docs/source/pythonapi/mgxs.rst @@ -4,5 +4,38 @@ Multi-Group Cross Sections ========================== -.. automodule:: openmc.mgxs.mgxs +.. autoclass:: openmc.mgxs.mgxs.MGXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.AbsorptionXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.CaptureXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.Chi + :members: + +.. autoclass:: openmc.mgxs.mgxs.FissionXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.NuFissionXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.NuScatterXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.NuScatterMatrixXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.ScatterXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.ScatterMatrixXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.TotalXS + :members: + +.. autoclass:: openmc.mgxs.mgxs.TransportXS :members: From 0cc1e6c09357321505052e3ea61456c9de9a4878 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Wed, 28 Oct 2015 09:09:28 -0500 Subject: [PATCH 125/130] Add summary of classes available in openmc.mgxs.mgxs module --- docs/source/conf.py | 1 + docs/source/pythonapi/mgxs.rst | 49 +++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 4a18f14de..05559aab0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -27,6 +27,7 @@ sys.path.insert(0, os.path.abspath('../..')) extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon', 'sphinx.ext.pngmath', + 'sphinx.ext.autosummary', 'sphinxcontrib.tikz', 'sphinx_numfig', 'notebook_sphinxext'] diff --git a/docs/source/pythonapi/mgxs.rst b/docs/source/pythonapi/mgxs.rst index 82bfdd275..c7084e565 100644 --- a/docs/source/pythonapi/mgxs.rst +++ b/docs/source/pythonapi/mgxs.rst @@ -4,38 +4,63 @@ Multi-Group Cross Sections ========================== -.. autoclass:: openmc.mgxs.mgxs.MGXS +.. currentmodule:: openmc.mgxs.mgxs + +---------------------------- +Summary of Available Classes +---------------------------- + +.. autosummary:: + + MGXS + AbsorptionXS + CaptureXS + Chi + FissionXS + NuFissionXS + NuScatterXS + NuScatterMatrixXS + ScatterXS + ScatterMatrixXS + TotalXS + TransportXS + +------------------- +Class Documentation +------------------- + +.. autoclass:: MGXS :members: -.. autoclass:: openmc.mgxs.mgxs.AbsorptionXS +.. autoclass:: AbsorptionXS :members: -.. autoclass:: openmc.mgxs.mgxs.CaptureXS +.. autoclass:: CaptureXS :members: -.. autoclass:: openmc.mgxs.mgxs.Chi +.. autoclass:: Chi :members: -.. autoclass:: openmc.mgxs.mgxs.FissionXS +.. autoclass:: FissionXS :members: -.. autoclass:: openmc.mgxs.mgxs.NuFissionXS +.. autoclass:: NuFissionXS :members: -.. autoclass:: openmc.mgxs.mgxs.NuScatterXS +.. autoclass:: NuScatterXS :members: -.. autoclass:: openmc.mgxs.mgxs.NuScatterMatrixXS +.. autoclass:: NuScatterMatrixXS :members: -.. autoclass:: openmc.mgxs.mgxs.ScatterXS +.. autoclass:: ScatterXS :members: -.. autoclass:: openmc.mgxs.mgxs.ScatterMatrixXS +.. autoclass:: ScatterMatrixXS :members: -.. autoclass:: openmc.mgxs.mgxs.TotalXS +.. autoclass:: TotalXS :members: -.. autoclass:: openmc.mgxs.mgxs.TransportXS +.. autoclass:: TransportXS :members: From 370c942977166a434a2f21c07a68f0f0b3ebfbcc Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 10:36:43 -0400 Subject: [PATCH 126/130] Removed MGXS subclass create_tallies routines in place of tallies property getters --- .../examples/multi-group-cross-sections.ipynb | 199 +++++----- openmc/mgxs/library.py | 1 - openmc/mgxs/mgxs.py | 370 +++++++++++------- 3 files changed, 310 insertions(+), 260 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index a6dda13d6..845c71118 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -309,7 +309,7 @@ "cell_type": "code", "execution_count": 11, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ @@ -324,7 +324,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we must instruct our multi-group cross section objects to generate the tallies needed to calculate each of them in OpenMC. This can be done with the `MGXS.create_tallies()` routine." + "Each multi-group cross section object stores its tallies in a Python dictionary called `tallies`. We can inspect the tallies in the dictionary for our `NuFission` object as follows. " ] }, { @@ -333,34 +333,12 @@ "metadata": { "collapsed": false }, - "outputs": [], - "source": [ - "# Instruct each multi-group cross section to generate tallies\n", - "transport.create_tallies()\n", - "nufission.create_tallies()\n", - "nuscatter.create_tallies()\n", - "chi.create_tallies()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each multi-group cross section object stores its tallies in a Python dictionary called `tallies`. We can inspect the tallies in the dictionary for our `NuFission` object as follows. " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, "outputs": [ { "data": { "text/plain": [ "OrderedDict([('flux', Tally\n", - "\tID =\t10003\n", + "\tID =\t10000\n", "\tName =\t\n", "\tFilters =\t\n", " \t\tcell\t[1]\n", @@ -371,7 +349,7 @@ "\tScores =\t['flux']\n", "\tEstimator =\ttracklength\n", "), ('nu-fission', Tally\n", - "\tID =\t10004\n", + "\tID =\t10001\n", "\tName =\t\n", "\tFilters =\t\n", " \t\tcell\t[1]\n", @@ -384,7 +362,7 @@ ")])" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -402,7 +380,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -440,7 +418,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -466,7 +444,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-27 17:26:51\n", + " Date/Time: 2015-10-28 10:30:50\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -552,20 +530,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.0480E+00 seconds\n", - " Reading cross sections = 3.3600E-01 seconds\n", - " Total time in simulation = 2.8493E+01 seconds\n", - " Time in transport only = 2.8402E+01 seconds\n", - " Time in inactive batches = 3.3050E+00 seconds\n", - " Time in active batches = 2.5188E+01 seconds\n", - " Time synchronizing fission bank = 6.0000E-03 seconds\n", + " Total time for initialization = 3.9900E-01 seconds\n", + " Reading cross sections = 9.3000E-02 seconds\n", + " Total time in simulation = 1.3697E+01 seconds\n", + " Time in transport only = 1.3685E+01 seconds\n", + " Time in inactive batches = 1.8610E+00 seconds\n", + " Time in active batches = 1.1836E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-03 seconds\n", " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV 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 = 3.0000E-03 seconds\n", - " Total time elapsed = 2.9569E+01 seconds\n", - " Calculation Rate (inactive) = 7564.30 neutrons/second\n", - " Calculation Rate (active) = 3970.14 neutrons/second\n", + " Total time for finalization = 2.0000E-03 seconds\n", + " Total time elapsed = 1.4106E+01 seconds\n", + " Calculation Rate (inactive) = 13433.6 neutrons/second\n", + " Calculation Rate (active) = 8448.80 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -583,7 +561,7 @@ "0" ] }, - "execution_count": 15, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -610,7 +588,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -629,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -649,7 +627,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -671,7 +649,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -714,7 +692,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -755,11 +733,18 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:1250: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)\n" + ] + }, { "data": { "text/html": [ @@ -885,7 +870,7 @@ "54 1 2 2 total 0.266499 0.001265" ] }, - "execution_count": 21, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -904,7 +889,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -922,7 +907,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": { "collapsed": true }, @@ -950,7 +935,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -972,7 +957,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": { "collapsed": true }, @@ -1006,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1015,9 +1000,10 @@ "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.685184\tres = 8.020E-317\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 1.350E-316\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", "[ NORMAL ] Iteration 3:\tk_eff = 0.728846\tres = 4.513E-02\n", @@ -1167,7 +1153,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -1230,7 +1216,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -1264,7 +1250,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -1290,7 +1276,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "metadata": { "collapsed": true }, @@ -1319,7 +1305,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1356,7 +1342,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -1381,7 +1367,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": { "collapsed": true }, @@ -1408,7 +1394,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1431,7 +1417,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1462,7 +1448,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1481,9 +1467,6 @@ " \n", " # Tally cross sections by nuclide (e.g., micro cross sections)\n", " xs_library[cell.id][rxn_type].by_nuclide = True\n", - " \n", - " # Create OpenMC tallies for this cross section\n", - " xs_library[cell.id][rxn_type].create_tallies()\n", " \n", " # Add OpenMC tallies to the tallies file for XML generation\n", " for tally in xs_library[cell.id][rxn_type].tallies.values():\n", @@ -1502,7 +1485,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1528,7 +1511,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-27 17:27:22\n", + " Date/Time: 2015-10-28 10:31:06\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1605,7 +1588,7 @@ " 48/1 1.23570 1.22442 +/- 0.00187\n", " 49/1 1.22288 1.22438 +/- 0.00182\n", " 50/1 1.20470 1.22389 +/- 0.00184\n", - " Triggers unsatisfied, max unc./thresh. is 1.18932 for flux in tally 10090\n", + " Triggers unsatisfied, max unc./thresh. is 1.18932 for flux in tally 10080\n", " The estimated number of batches is 67\n", " Creating state point statepoint.050.h5...\n", " 51/1 1.24158 1.22432 +/- 0.00185\n", @@ -1635,20 +1618,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 1.2520E+00 seconds\n", - " Reading cross sections = 2.9400E-01 seconds\n", - " Total time in simulation = 3.6113E+02 seconds\n", - " Time in transport only = 3.6098E+02 seconds\n", - " Time in inactive batches = 2.7487E+01 seconds\n", - " Time in active batches = 3.3365E+02 seconds\n", - " Time synchronizing fission bank = 3.4000E-02 seconds\n", - " Sampling source sites = 2.2000E-02 seconds\n", - " SEND/RECV source sites = 1.2000E-02 seconds\n", - " Time accumulating tallies = 2.0000E-03 seconds\n", - " Total time for finalization = 1.5000E-02 seconds\n", - " Total time elapsed = 3.6247E+02 seconds\n", - " Calculation Rate (inactive) = 3638.08 neutrons/second\n", - " Calculation Rate (active) = 1198.88 neutrons/second\n", + " Total time for initialization = 3.8900E-01 seconds\n", + " Reading cross sections = 8.4000E-02 seconds\n", + " Total time in simulation = 2.2985E+02 seconds\n", + " Time in transport only = 2.2979E+02 seconds\n", + " Time in inactive batches = 1.3571E+01 seconds\n", + " Time in active batches = 2.1628E+02 seconds\n", + " Time synchronizing fission bank = 1.5000E-02 seconds\n", + " Sampling source sites = 1.0000E-02 seconds\n", + " SEND/RECV source sites = 5.0000E-03 seconds\n", + " Time accumulating tallies = 0.0000E+00 seconds\n", + " Total time for finalization = 8.0000E-03 seconds\n", + " Total time elapsed = 2.3028E+02 seconds\n", + " Calculation Rate (inactive) = 7368.65 neutrons/second\n", + " Calculation Rate (active) = 1849.45 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1666,7 +1649,7 @@ "0" ] }, - "execution_count": 37, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1696,7 +1679,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1717,7 +1700,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1753,7 +1736,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1807,7 +1790,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1849,7 +1832,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1979,7 +1962,7 @@ "119 10002 1 5 O-16 0.000000 0.000000" ] }, - "execution_count": 42, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1999,7 +1982,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -2027,7 +2010,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -2036,7 +2019,7 @@ "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2067,7 +2050,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 44, "metadata": { "collapsed": true }, @@ -2089,7 +2072,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -2128,7 +2111,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -2211,7 +2194,7 @@ "2 10000 2 O-16 3.798833 0.010031" ] }, - "execution_count": 47, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -2237,7 +2220,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -2259,7 +2242,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -2307,7 +2290,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -2335,7 +2318,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -2370,7 +2353,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2411,7 +2394,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -2429,7 +2412,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 53, "metadata": { "collapsed": false }, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index 32f9c937a..c135eeea7 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -248,7 +248,6 @@ class Library(object): if isinstance(mgxs, openmc.mgxs.ScatterMatrixXS): mgxs.correction = self.correction - mgxs.create_tallies() self.all_mgxs[domain.id][mgxs_type] = mgxs def add_to_tallies_file(self, tallies_file, merge=True): diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 775c51941..65e80f0d3 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -41,7 +41,7 @@ DOMAIN_TYPES = ['cell', # Supported domain classes # TODO: Implement Mesh domains -_DOMAINS = [openmc.Cell, +DOMAINS = [openmc.Cell, openmc.Universe, openmc.Material] @@ -106,7 +106,7 @@ class MGXS(object): self._domain_type = None self._energy_groups = None self._tally_trigger = None - self._tallies = OrderedDict() + self._tallies = None self._xs_tally = None self.name = name @@ -409,7 +409,6 @@ class MGXS(object): return densities - @abc.abstractmethod def create_tallies(self, scores, all_filters, keys, estimator): """Instantiates tallies needed to compute the multi-group cross section. @@ -437,6 +436,8 @@ class MGXS(object): cv.check_type('keys', keys, Iterable, basestring) cv.check_value('estimator', estimator, ['analog', 'tracklength']) + self._tallies = OrderedDict() + # Create a domain Filter object domain_filter = openmc.Filter(self.domain_type, self.domain.id) @@ -535,9 +536,6 @@ class MGXS(object): 'which is not yet supported'.format(self.domain_type) raise ValueError(msg) - # Create Tallies to search for in StatePoint - self.create_tallies() - # 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': @@ -1263,7 +1261,8 @@ class TotalXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'total' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two tracklength tallies to compute the 'flux' @@ -1272,18 +1271,24 @@ class TotalXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'total'] - estimator = 'tracklength' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'total'] + estimator = 'tracklength' + keys = scores - # Initialize the Tallies - super(TotalXS, self).create_tallies(scores, filters, keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Initialize the Tallies + super(TotalXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(TotalXS, self).tallies def compute_xs(self): """Computes the multi-group total cross sections using OpenMC @@ -1303,7 +1308,8 @@ class TransportXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'transport' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs three analog tallies to compute the 'flux', @@ -1312,20 +1318,25 @@ class TransportXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'total', 'scatter-P1'] - estimator = 'analog' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - energyout_filter = openmc.Filter('energyout', group_edges) - filters = [[energy_filter], [energy_filter], [energyout_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'total', 'scatter-P1'] + estimator = 'analog' + keys = scores - # Initialize the Tallies - super(TransportXS, self).create_tallies(scores, filters, - keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + energyout_filter = openmc.Filter('energyout', group_edges) + filters = [[energy_filter], [energy_filter], [energyout_filter]] + + # Initialize the Tallies + super(TransportXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(TransportXS, self).tallies def load_from_statepoint(self, statepoint): """Extracts tallies in an OpenMC StatePoint with the data needed to @@ -1375,7 +1386,8 @@ class AbsorptionXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'absorption' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two tracklength tallies to compute the 'flux' @@ -1384,19 +1396,24 @@ class AbsorptionXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'absorption'] - estimator = 'tracklength' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'absorption'] + estimator = 'tracklength' + keys = scores - # Initialize the Tallies - super(AbsorptionXS, self).create_tallies(scores, filters, - keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Initialize the Tallies + super(AbsorptionXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(AbsorptionXS, self).tallies def compute_xs(self): """Computes the multi-group absorption cross sections using OpenMC @@ -1415,7 +1432,8 @@ class CaptureXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'capture' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two tracklength tallies to compute the 'flux' @@ -1424,18 +1442,24 @@ class CaptureXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'absorption', 'fission'] - estimator = 'tracklength' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'absorption', 'fission'] + estimator = 'tracklength' + keys = scores - # Initialize the Tallies - super(CaptureXS, self).create_tallies(scores, filters, keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter], [energy_filter]] + + # Initialize the Tallies + super(CaptureXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(CaptureXS, self).tallies def compute_xs(self): """Computes the multi-group capture cross sections using OpenMC @@ -1455,7 +1479,8 @@ class FissionXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'fission' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two tracklength tallies to compute the 'flux' @@ -1464,18 +1489,24 @@ class FissionXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'fission'] - estimator = 'tracklength' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'fission'] + estimator = 'tracklength' + keys = scores - # Initialize the Tallies - super(FissionXS, self).create_tallies(scores, filters, keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Initialize the Tallies + super(FissionXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(FissionXS, self).tallies def compute_xs(self): """Computes the multi-group fission cross sections using OpenMC @@ -1494,7 +1525,8 @@ class NuFissionXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'nu-fission' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two tracklength tallies to compute the 'flux' @@ -1503,19 +1535,24 @@ class NuFissionXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'nu-fission'] - estimator = 'tracklength' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'nu-fission'] + estimator = 'tracklength' + keys = scores - # Initialize the Tallies - super(NuFissionXS, self).create_tallies(scores, filters, - keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Initialize the Tallies + super(NuFissionXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(NuFissionXS, self).tallies def compute_xs(self): """Computes the multi-group nu-fission cross sections using OpenMC @@ -1534,7 +1571,8 @@ class ScatterXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'scatter' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two tracklength tallies to compute the 'flux' @@ -1543,18 +1581,24 @@ class ScatterXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'scatter'] - estimator = 'tracklength' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'scatter'] + estimator = 'tracklength' + keys = scores - # Intialize the Tallies - super(ScatterXS, self).create_tallies(scores, filters, keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Intialize the Tallies + super(ScatterXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(ScatterXS, self).tallies def compute_xs(self): """Computes the scattering multi-group cross sections using @@ -1573,7 +1617,8 @@ class NuScatterXS(MGXS): groups, by_nuclide, name) self._rxn_type = 'nu-scatter' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two analog tallies to compute the 'flux' @@ -1582,19 +1627,24 @@ class NuScatterXS(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['flux', 'nu-scatter'] - estimator = 'analog' - keys = scores + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy_filter = openmc.Filter('energy', group_edges) - filters = [[energy_filter], [energy_filter]] + # Create a list of scores for each Tally to be created + scores = ['flux', 'nu-scatter'] + estimator = 'analog' + keys = scores - # Initialize the Tallies - super(NuScatterXS, self).create_tallies(scores, filters, - keys, estimator) + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy_filter = openmc.Filter('energy', group_edges) + filters = [[energy_filter], [energy_filter]] + + # Initialize the Tallies + super(NuScatterXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(NuScatterXS, self).tallies def compute_xs(self): """Computes the nu-scattering multi-group cross section using OpenMC @@ -1630,12 +1680,8 @@ class ScatterMatrixXS(MGXS): def correction(self): return self._correction - @correction.setter - def correction(self, correction): - cv.check_value('correction', correction, ('P0', None)) - self._correction = correction - - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs three analog tallies to compute the 'flux', @@ -1644,24 +1690,34 @@ class ScatterMatrixXS(MGXS): """ - group_edges = self.energy_groups.group_edges - energy = openmc.Filter('energy', group_edges) - energyout = openmc.Filter('energyout', group_edges) + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create a list of scores for each Tally to be created - if self.correction == 'P0': - scores = ['flux', 'scatter', 'scatter-P1'] - filters = [[energy], [energy, energyout], [energyout]] - else: - scores = ['flux', 'scatter'] - filters = [[energy], [energy, energyout]] + group_edges = self.energy_groups.group_edges + energy = openmc.Filter('energy', group_edges) + energyout = openmc.Filter('energyout', group_edges) - estimator = 'analog' - keys = scores + # Create a list of scores for each Tally to be created + if self.correction == 'P0': + scores = ['flux', 'scatter', 'scatter-P1'] + filters = [[energy], [energy, energyout], [energyout]] + else: + scores = ['flux', 'scatter'] + filters = [[energy], [energy, energyout]] - # Initialize the Tallies - super(ScatterMatrixXS, self).create_tallies(scores, filters, - keys, estimator) + estimator = 'analog' + keys = scores + + # Initialize the Tallies + super(ScatterMatrixXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(ScatterMatrixXS, self).tallies + + @correction.setter + def correction(self, correction): + cv.check_value('correction', correction, ('P0', None)) + self._correction = correction def compute_xs(self, correction='P0'): """Computes the multi-group scattering matrix using OpenMC @@ -1943,7 +1999,8 @@ class NuScatterMatrixXS(ScatterMatrixXS): groups, by_nuclide, name) self._rxn_type = 'nu-scatter matrix' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs three analog tallies to compute the 'flux', @@ -1952,26 +2009,31 @@ class NuScatterMatrixXS(ScatterMatrixXS): """ - # Create the non-domain specific Filters for the Tallies - group_edges = self.energy_groups.group_edges - energy = openmc.Filter('energy', group_edges) - energyout = openmc.Filter('energyout', group_edges) + # Instantiate tallies if they do not exist + if self._tallies is None: - # Create a list of scores for each Tally to be created - if self.correction == 'P0': - scores = ['flux', 'nu-scatter', 'scatter-P1'] - estimator = 'analog' - keys = ['flux', 'scatter', 'scatter-P1'] - filters = [[energy], [energy, energyout], [energyout]] - else: - scores = ['flux', 'nu-scatter'] - estimator = 'analog' - keys = ['flux', 'scatter'] - filters = [[energy], [energy, energyout]] + # Create the non-domain specific Filters for the Tallies + group_edges = self.energy_groups.group_edges + energy = openmc.Filter('energy', group_edges) + energyout = openmc.Filter('energyout', group_edges) - # Intialize the Tallies - super(ScatterMatrixXS, self).create_tallies(scores, filters, - keys, estimator) + # Create a list of scores for each Tally to be created + if self.correction == 'P0': + scores = ['flux', 'nu-scatter', 'scatter-P1'] + estimator = 'analog' + keys = ['flux', 'scatter', 'scatter-P1'] + filters = [[energy], [energy, energyout], [energyout]] + else: + scores = ['flux', 'nu-scatter'] + estimator = 'analog' + keys = ['flux', 'scatter'] + filters = [[energy], [energy, energyout]] + + # Intialize the Tallies + super(ScatterMatrixXS, self).create_tallies(scores, filters, + keys, estimator) + + return super(ScatterMatrixXS, self).tallies class Chi(MGXS): """The fission spectrum.""" @@ -1981,7 +2043,8 @@ class Chi(MGXS): super(Chi, self).__init__(domain, domain_type, groups, by_nuclide, name) self._rxn_type = 'chi' - def create_tallies(self): + @property + def tallies(self): """Construct the OpenMC tallies needed to compute this cross section. This method constructs two analog tallies to compute 'nu-fission' @@ -1990,19 +2053,24 @@ class Chi(MGXS): """ - # Create a list of scores for each Tally to be created - scores = ['nu-fission', 'nu-fission'] - estimator = 'analog' - keys = ['nu-fission-in', 'nu-fission-out'] + # Instantiate tallies if they do not exist + if self._tallies is None: - # 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]]) - filters = [[energyin], [energyout]] + # Create a list of scores for each Tally to be created + scores = ['nu-fission', 'nu-fission'] + estimator = 'analog' + keys = ['nu-fission-in', 'nu-fission-out'] - # Intialize the Tallies - super(Chi, self).create_tallies(scores, filters, keys, estimator) + # 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]]) + filters = [[energyin], [energyout]] + + # Intialize the Tallies + super(Chi, self).create_tallies(scores, filters, keys, estimator) + + return super(Chi, self).tallies def compute_xs(self): """Computes chi fission spectrum using OpenMC tally arithmetic.""" From 4c18f5b826dd673046029694cd354f7fec709a08 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 11:42:19 -0400 Subject: [PATCH 127/130] Made MGXS subclasses call compute_xs from load_from_statepint --- .../examples/multi-group-cross-sections.ipynb | 181 ++++++++---------- openmc/mgxs/library.py | 11 +- openmc/mgxs/mgxs.py | 64 +++---- openmc/settings.py | 1 - tests/test_track_output/results_test.dat | 9 - 5 files changed, 109 insertions(+), 157 deletions(-) delete mode 100644 tests/test_track_output/results_test.dat diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 845c71118..99ab3b26f 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -444,7 +444,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-28 10:30:50\n", + " Date/Time: 2015-10-28 11:38:06\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -530,20 +530,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9900E-01 seconds\n", - " Reading cross sections = 9.3000E-02 seconds\n", - " Total time in simulation = 1.3697E+01 seconds\n", - " Time in transport only = 1.3685E+01 seconds\n", - " Time in inactive batches = 1.8610E+00 seconds\n", - " Time in active batches = 1.1836E+01 seconds\n", - " Time synchronizing fission bank = 1.0000E-03 seconds\n", - " Sampling source sites = 1.0000E-03 seconds\n", - " SEND/RECV source sites = 0.0000E+00 seconds\n", + " Total time for initialization = 3.9500E-01 seconds\n", + " Reading cross sections = 9.0000E-02 seconds\n", + " Total time in simulation = 1.3404E+01 seconds\n", + " Time in transport only = 1.3392E+01 seconds\n", + " Time in inactive batches = 1.9690E+00 seconds\n", + " Time in active batches = 1.1435E+01 seconds\n", + " Time synchronizing fission bank = 4.0000E-03 seconds\n", + " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 1.4106E+01 seconds\n", - " Calculation Rate (inactive) = 13433.6 neutrons/second\n", - " Calculation Rate (active) = 8448.80 neutrons/second\n", + " Total time elapsed = 1.3810E+01 seconds\n", + " Calculation Rate (inactive) = 12696.8 neutrons/second\n", + " Calculation Rate (active) = 8745.08 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -622,7 +622,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The statepoint is now ready to be analyzed by our multi-group cross sections. The first step is to load the tallies from the statepoint into each object." + "The statepoint is now ready to be analyzed by our multi-group cross sections. We simply have to load the tallies from the statepoint into each object as follows and our `MGXS` objects will compute the cross sections for us under-the-hood." ] }, { @@ -631,28 +631,6 @@ "metadata": { "collapsed": false }, - "outputs": [], - "source": [ - "# Load the tallies from the statepoint into each MGXS object\n", - "transport.load_from_statepoint(sp)\n", - "nufission.load_from_statepoint(sp)\n", - "nuscatter.load_from_statepoint(sp)\n", - "chi.load_from_statepoint(sp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The multi-group cross section objects can now use OpenMC's [tally arithmetic](http://mit-crpg.github.io/openmc/pythonapi/examples/tally-arithmetic.html) to compute cross sections from the tally data." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, "outputs": [ { "name": "stderr", @@ -663,10 +641,11 @@ } ], "source": [ - "transport.compute_xs()\n", - "nufission.compute_xs()\n", - "nuscatter.compute_xs()\n", - "chi.compute_xs()" + "# Load the tallies from the statepoint into each MGXS object\n", + "transport.load_from_statepoint(sp)\n", + "nufission.load_from_statepoint(sp)\n", + "nuscatter.load_from_statepoint(sp)\n", + "chi.load_from_statepoint(sp)" ] }, { @@ -692,7 +671,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -733,18 +712,11 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:1250: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)\n" - ] - }, { "data": { "text/html": [ @@ -870,7 +842,7 @@ "54 1 2 2 total 0.266499 0.001265" ] }, - "execution_count": 20, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -889,7 +861,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "metadata": { "collapsed": true }, @@ -907,7 +879,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -935,7 +907,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -957,7 +929,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { "collapsed": true }, @@ -991,7 +963,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -1003,7 +975,7 @@ "[ NORMAL ] Ray tracing for track segmentation...\n", "[ NORMAL ] Dumping tracks to file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 1.350E-316\n", + "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 2.023E-316\n", "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", "[ NORMAL ] Iteration 3:\tk_eff = 0.728846\tres = 4.513E-02\n", @@ -1153,7 +1125,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1216,7 +1188,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -1250,7 +1222,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 27, "metadata": { "collapsed": true }, @@ -1276,7 +1248,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 28, "metadata": { "collapsed": true }, @@ -1305,7 +1277,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -1342,7 +1314,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1367,7 +1339,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 31, "metadata": { "collapsed": true }, @@ -1394,7 +1366,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1417,7 +1389,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1448,7 +1420,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1485,7 +1457,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -1511,7 +1483,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-28 10:31:06\n", + " Date/Time: 2015-10-28 11:38:21\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1618,20 +1590,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.8900E-01 seconds\n", - " Reading cross sections = 8.4000E-02 seconds\n", - " Total time in simulation = 2.2985E+02 seconds\n", - " Time in transport only = 2.2979E+02 seconds\n", - " Time in inactive batches = 1.3571E+01 seconds\n", - " Time in active batches = 2.1628E+02 seconds\n", - " Time synchronizing fission bank = 1.5000E-02 seconds\n", - " Sampling source sites = 1.0000E-02 seconds\n", - " SEND/RECV source sites = 5.0000E-03 seconds\n", - " Time accumulating tallies = 0.0000E+00 seconds\n", - " Total time for finalization = 8.0000E-03 seconds\n", - " Total time elapsed = 2.3028E+02 seconds\n", - " Calculation Rate (inactive) = 7368.65 neutrons/second\n", - " Calculation Rate (active) = 1849.45 neutrons/second\n", + " Total time for initialization = 4.2400E-01 seconds\n", + " Reading cross sections = 8.5000E-02 seconds\n", + " Total time in simulation = 1.9319E+02 seconds\n", + " Time in transport only = 1.9314E+02 seconds\n", + " Time in inactive batches = 1.3511E+01 seconds\n", + " Time in active batches = 1.7968E+02 seconds\n", + " Time synchronizing fission bank = 1.9000E-02 seconds\n", + " Sampling source sites = 1.1000E-02 seconds\n", + " SEND/RECV source sites = 7.0000E-03 seconds\n", + " Time accumulating tallies = 3.0000E-03 seconds\n", + " Total time for finalization = 9.0000E-03 seconds\n", + " Total time elapsed = 1.9366E+02 seconds\n", + " Calculation Rate (inactive) = 7401.38 neutrons/second\n", + " Calculation Rate (active) = 2226.18 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1649,7 +1621,7 @@ "0" ] }, - "execution_count": 36, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1679,7 +1651,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1700,7 +1672,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -1709,8 +1681,7 @@ "# Iterate over all cells and cross section types\n", "for cell in openmc_cells:\n", " for rxn_type in xs_library[cell.id]:\n", - " xs_library[cell.id][rxn_type].load_from_statepoint(sp)\n", - " xs_library[cell.id][rxn_type].compute_xs()" + " xs_library[cell.id][rxn_type].load_from_statepoint(sp)" ] }, { @@ -1736,7 +1707,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -1790,7 +1761,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1832,7 +1803,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1962,7 +1933,7 @@ "119 10002 1 5 O-16 0.000000 0.000000" ] }, - "execution_count": 41, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1982,7 +1953,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -2010,7 +1981,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -2019,7 +1990,7 @@ "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2050,7 +2021,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 43, "metadata": { "collapsed": true }, @@ -2072,7 +2043,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 44, "metadata": { "collapsed": false }, @@ -2111,7 +2082,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -2194,7 +2165,7 @@ "2 10000 2 O-16 3.798833 0.010031" ] }, - "execution_count": 46, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -2220,7 +2191,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -2242,7 +2213,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -2290,7 +2261,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -2318,7 +2289,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -2353,7 +2324,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -2394,7 +2365,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -2412,7 +2383,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 52, "metadata": { "collapsed": false }, diff --git a/openmc/mgxs/library.py b/openmc/mgxs/library.py index c135eeea7..215b4f12e 100644 --- a/openmc/mgxs/library.py +++ b/openmc/mgxs/library.py @@ -312,11 +312,6 @@ class Library(object): mgxs = self.get_mgxs(domain, mgxs_type) mgxs.load_from_statepoint(statepoint) - if isinstance(mgxs, openmc.mgxs.ScatterMatrixXS): - mgxs.compute_xs(correction=self.correction) - else: - mgxs.compute_xs() - def get_mgxs(self, domain, mgxs_type): """Return the MGXS object for some domain and reaction rate type. @@ -478,7 +473,7 @@ class Library(object): return subdomain_avg_library - def build_hdf5_store(self, filename='mgxs', directory='mgxs', + def build_hdf5_store(self, filename='mgxs.h5', directory='mgxs', subdomains='all', nuclides='all', xs_type='macro'): """Export the multi-group cross section library to an HDF5 binary file. @@ -494,7 +489,7 @@ class Library(object): Parameters ---------- filename : str - Filename for the HDF5 file. Defaults to 'mgxs'. + Filename for the HDF5 file. Defaults to 'mgxs.h5'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. subdomains : {'all', 'avg'} @@ -536,7 +531,7 @@ class Library(object): os.makedirs(directory) # Add an attribute for the number of energy groups to the HDF5 file - full_filename = os.path.join(directory, filename + '.h5') + full_filename = os.path.join(directory, filename) full_filename = full_filename.replace(' ', '-') f = h5py.File(full_filename, 'w') f.attrs["# groups"] = self.num_groups diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 65e80f0d3..f0aa9d618 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -41,7 +41,7 @@ DOMAIN_TYPES = ['cell', # Supported domain classes # TODO: Implement Mesh domains -DOMAINS = [openmc.Cell, +_DOMAINS = [openmc.Cell, openmc.Universe, openmc.Material] @@ -90,6 +90,17 @@ class MGXS(object): xs_tally : Tally Derived tally for the multi-group cross section. This attribute is None unless the multi-group cross section has been computed. + num_sumbdomains : Integral + The number of subdomains is unity for 'material', 'cell' and 'universe' + domain types. When the 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 : Integral + The number of nuclides for which the multi-group cross section is + being tracked. This is unity if the by_nuclide attribute is False. + nuclides : list of str or 'sum' + A list of nuclide string names (e.g., 'U-238', 'O-16') when by_nuclide + is True and 'sum' when by_nuclide is False. """ @@ -556,6 +567,9 @@ class MGXS(object): filter_bins, tally.nuclides) self.tallies[tally_type] = sp_tally + # Compute the cross section from the tallies + self.compute_xs() + def get_xs(self, groups='all', subdomains='all', nuclides='all', xs_type='macro', order_groups='increasing', value='mean'): """Returns an array of multi-group cross sections. @@ -926,7 +940,7 @@ class MGXS(object): print(string) - def build_hdf5_store(self, filename='mgxs', directory='mgxs', + def build_hdf5_store(self, filename='mgxs.h5', directory='mgxs', subdomains='all', nuclides='all', xs_type='macro', append=True): """Export the multi-group cross section data to an HDF5 binary file. @@ -942,7 +956,7 @@ class MGXS(object): Parameters ---------- filename : str - Filename for the HDF5 file. Defaults to 'mgxs'. + Filename for the HDF5 file. Defaults to 'mgxs.h5'. directory : str Directory for the HDF5 file. Defaults to 'mgxs'. subdomains : Iterable of Integral or 'all' @@ -957,7 +971,7 @@ class MGXS(object): xs_type: {'macro', 'micro'} Store the macro or micro cross section in units of cm^-1 or barns. Defaults to 'macro'. - append : boolean + append : bool If true, appends to an existing HDF5 file with the same filename directory (if one exists). Defaults to True. @@ -982,7 +996,7 @@ class MGXS(object): if not os.path.exists(directory): os.makedirs(directory) - filename = os.path.join(directory, filename + '.h5') + filename = os.path.join(directory, filename) filename = filename.replace(' ', '-') if append and os.path.isfile(filename): @@ -1338,40 +1352,15 @@ class TransportXS(MGXS): return super(TransportXS, self).tallies - def load_from_statepoint(self, statepoint): - """Extracts tallies in an OpenMC StatePoint with the data needed to - compute multi-group cross sections. - - This method is needed to compute cross section data from tallies - in an OpenMC StatePoint object. - - NOTE: The statepoint must first be linked with an OpenMC Summary object. - - Parameters - ---------- - statepoint : openmc.StatePoint - An OpenMC StatePoint object with tally data - - Raises - ------ - ValueError - When this method is called with a statepoint that has not been - linked with a summary object. - - """ - - # Load the tallies from the statepoint using the parent class method - super(TransportXS, self).load_from_statepoint(statepoint) + def compute_xs(self): + """Computes the multi-group transport cross sections using OpenMC + tally arithmetic.""" # Use tally slicing to remove scatter-P0 data from scatter-P1 tally scatter_p1 = self.tallies['scatter-P1'] self.tallies['scatter-P1'] = scatter_p1.get_slice(scores=['scatter-P1']) self.tallies['scatter-P1'].filters[-1].type = 'energy' - def compute_xs(self): - """Computes the multi-group transport cross sections using OpenMC - tally arithmetic.""" - self._xs_tally = self.tallies['total'] - self.tallies['scatter-P1'] self._xs_tally /= self.tallies['flux'] super(TransportXS, self).compute_xs() @@ -1424,7 +1413,14 @@ class AbsorptionXS(MGXS): class CaptureXS(MGXS): - """A capture multi-group cross section.""" + """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 + not only radiative capture, but all forms of neutron disappearance aside + from fission (e.g., MT > 100). + + """ def __init__(self, domain=None, domain_type=None, groups=None, by_nuclide=False, name=''): diff --git a/openmc/settings.py b/openmc/settings.py index dbf031e28..519b5c7cf 100644 --- a/openmc/settings.py +++ b/openmc/settings.py @@ -1185,7 +1185,6 @@ class SettingsFile(object): self._eigenvalue_subelement = None self._source_element = None - self._create_eigenvalue_subelement() self._create_source_subelement() self._create_output_subelement() diff --git a/tests/test_track_output/results_test.dat b/tests/test_track_output/results_test.dat deleted file mode 100644 index 6ded87a0e..000000000 --- a/tests/test_track_output/results_test.dat +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - From e1283c7bf0558926754e492efe03b3c35ade86f6 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 11:50:56 -0400 Subject: [PATCH 128/130] Clarified the MGXS docstring as an abstract base class --- openmc/mgxs/mgxs.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7c2156c19..7f34f8856 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -47,13 +47,15 @@ _DOMAINS = [openmc.Cell, class MGXS(object): - """A multi-group cross section for some energy group structure within - some spatial domain. + """An abstract multi-group cross section for some energy group structure + within some spatial domain. This class can be used for both OpenMC input generation and tally data post-processing to compute spatially-homogenized and energy-integrated multi-group cross sections for deterministic neutronics calculations. + NOTE: Users should instantiate the subclasses of this abstract class. + Parameters ---------- domain : Material or Cell or Universe From 046f80c30941972cf6fe3fad0e8849e2e87c9812 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 12:24:38 -0400 Subject: [PATCH 129/130] Updated test suite for new tally ordering in MGXS module --- .../examples/multi-group-cross-sections.ipynb | 351 +++++++++--------- openmc/mgxs/mgxs.py | 22 +- .../inputs_true.dat | 2 +- tests/test_mgxs_library_hdf5/inputs_true.dat | 2 +- .../test_mgxs_library_hdf5.py | 2 +- .../inputs_true.dat | 2 +- .../inputs_true.dat | 2 +- 7 files changed, 195 insertions(+), 188 deletions(-) diff --git a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb index 99ab3b26f..4b0d2022b 100644 --- a/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb +++ b/docs/source/pythonapi/examples/multi-group-cross-sections.ipynb @@ -444,7 +444,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-28 11:38:06\n", + " Date/Time: 2015-10-28 12:11:50\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -530,20 +530,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 3.9500E-01 seconds\n", - " Reading cross sections = 9.0000E-02 seconds\n", - " Total time in simulation = 1.3404E+01 seconds\n", - " Time in transport only = 1.3392E+01 seconds\n", - " Time in inactive batches = 1.9690E+00 seconds\n", - " Time in active batches = 1.1435E+01 seconds\n", - " Time synchronizing fission bank = 4.0000E-03 seconds\n", - " Sampling source sites = 2.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 = 2.0000E-03 seconds\n", - " Total time elapsed = 1.3810E+01 seconds\n", - " Calculation Rate (inactive) = 12696.8 neutrons/second\n", - " Calculation Rate (active) = 8745.08 neutrons/second\n", + " Total time for initialization = 1.7630E+00 seconds\n", + " Reading cross sections = 4.0800E-01 seconds\n", + " Total time in simulation = 4.1757E+01 seconds\n", + " Time in transport only = 4.1713E+01 seconds\n", + " Time in inactive batches = 6.5950E+00 seconds\n", + " Time in active batches = 3.5162E+01 seconds\n", + " Time synchronizing fission bank = 1.0000E-02 seconds\n", + " Sampling source sites = 6.0000E-03 seconds\n", + " SEND/RECV source sites = 2.0000E-03 seconds\n", + " Time accumulating tallies = 1.0000E-03 seconds\n", + " Total time for finalization = 5.0000E-03 seconds\n", + " Total time elapsed = 4.3566E+01 seconds\n", + " Calculation Rate (inactive) = 3790.75 neutrons/second\n", + " Calculation Rate (active) = 2843.98 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -717,6 +717,13 @@ "collapsed": false }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python2.7/dist-packages/openmc-0.7.0-py2.7.egg/openmc/mgxs/mgxs.py:1264: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)\n" + ] + }, { "data": { "text/html": [ @@ -740,8 +747,8 @@ " 1\n", " 1\n", " total\n", - " 0.076970\n", - " 0.001012\n", + " 0.076913\n", + " 0.001013\n", " \n", " \n", " 62\n", @@ -749,8 +756,8 @@ " 1\n", " 2\n", " total\n", - " 0.087876\n", - " 0.000344\n", + " 0.087715\n", + " 0.000343\n", " \n", " \n", " 61\n", @@ -758,7 +765,7 @@ " 1\n", " 3\n", " total\n", - " 0.000418\n", + " 0.000417\n", " 0.000023\n", " \n", " \n", @@ -830,9 +837,9 @@ ], "text/plain": [ " cell group in group out nuclide mean std. dev.\n", - "63 1 1 1 total 0.076970 0.001012\n", - "62 1 1 2 total 0.087876 0.000344\n", - "61 1 1 3 total 0.000418 0.000023\n", + "63 1 1 1 total 0.076913 0.001013\n", + "62 1 1 2 total 0.087715 0.000343\n", + "61 1 1 3 total 0.000417 0.000023\n", "60 1 1 4 total 0.000000 0.000000\n", "59 1 1 5 total 0.000000 0.000000\n", "58 1 1 6 total 0.000000 0.000000\n", @@ -975,133 +982,133 @@ "[ NORMAL ] Ray tracing for track segmentation...\n", "[ NORMAL ] Dumping tracks to file...\n", "[ NORMAL ] Computing the eigenvalue...\n", - "[ NORMAL ] Iteration 0:\tk_eff = 0.685184\tres = 2.023E-316\n", - "[ NORMAL ] Iteration 1:\tk_eff = 0.785642\tres = 3.148E-01\n", - "[ NORMAL ] Iteration 2:\tk_eff = 0.750185\tres = 1.466E-01\n", - "[ NORMAL ] Iteration 3:\tk_eff = 0.728846\tres = 4.513E-02\n", - "[ NORMAL ] Iteration 4:\tk_eff = 0.695632\tres = 2.844E-02\n", - "[ NORMAL ] Iteration 5:\tk_eff = 0.663357\tres = 4.557E-02\n", - "[ NORMAL ] Iteration 6:\tk_eff = 0.632339\tres = 4.640E-02\n", - "[ NORMAL ] Iteration 7:\tk_eff = 0.604187\tres = 4.676E-02\n", - "[ NORMAL ] Iteration 8:\tk_eff = 0.579451\tres = 4.452E-02\n", - "[ NORMAL ] Iteration 9:\tk_eff = 0.558474\tres = 4.094E-02\n", - "[ NORMAL ] Iteration 10:\tk_eff = 0.541436\tres = 3.620E-02\n", - "[ NORMAL ] Iteration 11:\tk_eff = 0.528380\tres = 3.051E-02\n", - "[ NORMAL ] Iteration 12:\tk_eff = 0.519273\tres = 2.411E-02\n", - "[ NORMAL ] Iteration 13:\tk_eff = 0.513991\tres = 1.724E-02\n", - "[ NORMAL ] Iteration 14:\tk_eff = 0.512364\tres = 1.017E-02\n", - "[ NORMAL ] Iteration 15:\tk_eff = 0.514171\tres = 3.165E-03\n", - "[ NORMAL ] Iteration 16:\tk_eff = 0.519155\tres = 3.527E-03\n", - "[ NORMAL ] Iteration 17:\tk_eff = 0.527038\tres = 9.693E-03\n", - "[ NORMAL ] Iteration 18:\tk_eff = 0.537524\tres = 1.518E-02\n", - "[ NORMAL ] Iteration 19:\tk_eff = 0.550310\tres = 1.990E-02\n", - "[ NORMAL ] Iteration 20:\tk_eff = 0.565096\tres = 2.379E-02\n", - "[ NORMAL ] Iteration 21:\tk_eff = 0.581585\tres = 2.687E-02\n", - "[ NORMAL ] Iteration 22:\tk_eff = 0.599493\tres = 2.918E-02\n", - "[ NORMAL ] Iteration 23:\tk_eff = 0.618548\tres = 3.079E-02\n", - "[ NORMAL ] Iteration 24:\tk_eff = 0.638497\tres = 3.179E-02\n", - "[ NORMAL ] Iteration 25:\tk_eff = 0.659105\tres = 3.225E-02\n", - "[ NORMAL ] Iteration 26:\tk_eff = 0.680156\tres = 3.228E-02\n", - "[ NORMAL ] Iteration 27:\tk_eff = 0.701457\tres = 3.194E-02\n", - "[ NORMAL ] Iteration 28:\tk_eff = 0.722832\tres = 3.132E-02\n", - "[ NORMAL ] Iteration 29:\tk_eff = 0.744127\tres = 3.047E-02\n", - "[ NORMAL ] Iteration 30:\tk_eff = 0.765209\tres = 2.946E-02\n", - "[ NORMAL ] Iteration 31:\tk_eff = 0.785961\tres = 2.833E-02\n", - "[ NORMAL ] Iteration 32:\tk_eff = 0.806283\tres = 2.712E-02\n", - "[ NORMAL ] Iteration 33:\tk_eff = 0.826093\tres = 2.586E-02\n", - "[ NORMAL ] Iteration 34:\tk_eff = 0.845324\tres = 2.457E-02\n", - "[ NORMAL ] Iteration 35:\tk_eff = 0.863921\tres = 2.328E-02\n", - "[ NORMAL ] Iteration 36:\tk_eff = 0.881841\tres = 2.200E-02\n", - "[ NORMAL ] Iteration 37:\tk_eff = 0.899055\tres = 2.074E-02\n", - "[ NORMAL ] Iteration 38:\tk_eff = 0.915540\tres = 1.952E-02\n", - "[ NORMAL ] Iteration 39:\tk_eff = 0.931284\tres = 1.834E-02\n", - "[ NORMAL ] Iteration 40:\tk_eff = 0.946283\tres = 1.720E-02\n", - "[ NORMAL ] Iteration 41:\tk_eff = 0.960536\tres = 1.610E-02\n", - "[ NORMAL ] Iteration 42:\tk_eff = 0.974052\tres = 1.506E-02\n", - "[ NORMAL ] Iteration 43:\tk_eff = 0.986841\tres = 1.407E-02\n", - "[ NORMAL ] Iteration 44:\tk_eff = 0.998920\tres = 1.313E-02\n", - "[ NORMAL ] Iteration 45:\tk_eff = 1.010307\tres = 1.224E-02\n", - "[ NORMAL ] Iteration 46:\tk_eff = 1.021023\tres = 1.140E-02\n", - "[ NORMAL ] Iteration 47:\tk_eff = 1.031091\tres = 1.061E-02\n", - "[ NORMAL ] Iteration 48:\tk_eff = 1.040537\tres = 9.861E-03\n", - "[ NORMAL ] Iteration 49:\tk_eff = 1.049386\tres = 9.161E-03\n", - "[ NORMAL ] Iteration 50:\tk_eff = 1.057664\tres = 8.504E-03\n", - "[ NORMAL ] Iteration 51:\tk_eff = 1.065399\tres = 7.889E-03\n", - "[ NORMAL ] Iteration 52:\tk_eff = 1.072617\tres = 7.313E-03\n", - "[ NORMAL ] Iteration 53:\tk_eff = 1.079345\tres = 6.775E-03\n", - "[ NORMAL ] Iteration 54:\tk_eff = 1.085610\tres = 6.273E-03\n", - "[ NORMAL ] Iteration 55:\tk_eff = 1.091437\tres = 5.804E-03\n", - "[ NORMAL ] Iteration 56:\tk_eff = 1.096851\tres = 5.367E-03\n", - "[ NORMAL ] Iteration 57:\tk_eff = 1.101878\tres = 4.961E-03\n", - "[ NORMAL ] Iteration 58:\tk_eff = 1.106540\tres = 4.583E-03\n", - "[ NORMAL ] Iteration 59:\tk_eff = 1.110861\tres = 4.231E-03\n", - "[ NORMAL ] Iteration 60:\tk_eff = 1.114862\tres = 3.905E-03\n", - "[ NORMAL ] Iteration 61:\tk_eff = 1.118564\tres = 3.602E-03\n", - "[ NORMAL ] Iteration 62:\tk_eff = 1.121987\tres = 3.321E-03\n", - "[ NORMAL ] Iteration 63:\tk_eff = 1.125150\tres = 3.060E-03\n", - "[ NORMAL ] Iteration 64:\tk_eff = 1.128070\tres = 2.819E-03\n", - "[ NORMAL ] Iteration 65:\tk_eff = 1.130764\tres = 2.595E-03\n", - "[ NORMAL ] Iteration 66:\tk_eff = 1.133249\tres = 2.389E-03\n", - "[ NORMAL ] Iteration 67:\tk_eff = 1.135539\tres = 2.197E-03\n", - "[ NORMAL ] Iteration 68:\tk_eff = 1.137649\tres = 2.021E-03\n", - "[ NORMAL ] Iteration 69:\tk_eff = 1.139591\tres = 1.858E-03\n", - "[ NORMAL ] Iteration 70:\tk_eff = 1.141378\tres = 1.707E-03\n", - "[ NORMAL ] Iteration 71:\tk_eff = 1.143021\tres = 1.568E-03\n", - "[ NORMAL ] Iteration 72:\tk_eff = 1.144532\tres = 1.440E-03\n", - "[ NORMAL ] Iteration 73:\tk_eff = 1.145920\tres = 1.322E-03\n", - "[ NORMAL ] Iteration 74:\tk_eff = 1.147196\tres = 1.213E-03\n", - "[ NORMAL ] Iteration 75:\tk_eff = 1.148366\tres = 1.113E-03\n", - "[ NORMAL ] Iteration 76:\tk_eff = 1.149440\tres = 1.020E-03\n", - "[ NORMAL ] Iteration 77:\tk_eff = 1.150426\tres = 9.355E-04\n", - "[ NORMAL ] Iteration 78:\tk_eff = 1.151330\tres = 8.574E-04\n", - "[ NORMAL ] Iteration 79:\tk_eff = 1.152158\tres = 7.856E-04\n", - "[ NORMAL ] Iteration 80:\tk_eff = 1.152918\tres = 7.196E-04\n", - "[ NORMAL ] Iteration 81:\tk_eff = 1.153613\tres = 6.590E-04\n", - "[ NORMAL ] Iteration 82:\tk_eff = 1.154250\tres = 6.033E-04\n", - "[ NORMAL ] Iteration 83:\tk_eff = 1.154833\tres = 5.522E-04\n", - "[ NORMAL ] Iteration 84:\tk_eff = 1.155367\tres = 5.053E-04\n", - "[ NORMAL ] Iteration 85:\tk_eff = 1.155856\tres = 4.623E-04\n", - "[ NORMAL ] Iteration 86:\tk_eff = 1.156303\tres = 4.228E-04\n", - "[ NORMAL ] Iteration 87:\tk_eff = 1.156711\tres = 3.866E-04\n", - "[ NORMAL ] Iteration 88:\tk_eff = 1.157085\tres = 3.535E-04\n", - "[ NORMAL ] Iteration 89:\tk_eff = 1.157427\tres = 3.231E-04\n", - "[ NORMAL ] Iteration 90:\tk_eff = 1.157739\tres = 2.952E-04\n", - "[ NORMAL ] Iteration 91:\tk_eff = 1.158024\tres = 2.697E-04\n", - "[ NORMAL ] Iteration 92:\tk_eff = 1.158285\tres = 2.464E-04\n", - "[ NORMAL ] Iteration 93:\tk_eff = 1.158523\tres = 2.251E-04\n", - "[ NORMAL ] Iteration 94:\tk_eff = 1.158740\tres = 2.055E-04\n", - "[ NORMAL ] Iteration 95:\tk_eff = 1.158939\tres = 1.876E-04\n", - "[ NORMAL ] Iteration 96:\tk_eff = 1.159120\tres = 1.713E-04\n", - "[ NORMAL ] Iteration 97:\tk_eff = 1.159285\tres = 1.563E-04\n", - "[ NORMAL ] Iteration 98:\tk_eff = 1.159436\tres = 1.427E-04\n", - "[ NORMAL ] Iteration 99:\tk_eff = 1.159574\tres = 1.302E-04\n", - "[ NORMAL ] Iteration 100:\tk_eff = 1.159699\tres = 1.188E-04\n", - "[ NORMAL ] Iteration 101:\tk_eff = 1.159814\tres = 1.083E-04\n", - "[ NORMAL ] Iteration 102:\tk_eff = 1.159918\tres = 9.880E-05\n", - "[ NORMAL ] Iteration 103:\tk_eff = 1.160014\tres = 9.009E-05\n", - "[ NORMAL ] Iteration 104:\tk_eff = 1.160101\tres = 8.215E-05\n", - "[ NORMAL ] Iteration 105:\tk_eff = 1.160180\tres = 7.490E-05\n", - "[ NORMAL ] Iteration 106:\tk_eff = 1.160252\tres = 6.827E-05\n", - "[ NORMAL ] Iteration 107:\tk_eff = 1.160318\tres = 6.223E-05\n", - "[ NORMAL ] Iteration 108:\tk_eff = 1.160378\tres = 5.672E-05\n", - "[ NORMAL ] Iteration 109:\tk_eff = 1.160432\tres = 5.169E-05\n", - "[ NORMAL ] Iteration 110:\tk_eff = 1.160482\tres = 4.710E-05\n", - "[ NORMAL ] Iteration 111:\tk_eff = 1.160528\tres = 4.291E-05\n", - "[ NORMAL ] Iteration 112:\tk_eff = 1.160569\tres = 3.909E-05\n", - "[ NORMAL ] Iteration 113:\tk_eff = 1.160607\tres = 3.561E-05\n", - "[ NORMAL ] Iteration 114:\tk_eff = 1.160641\tres = 3.244E-05\n", - "[ NORMAL ] Iteration 115:\tk_eff = 1.160672\tres = 2.954E-05\n", - "[ NORMAL ] Iteration 116:\tk_eff = 1.160700\tres = 2.691E-05\n", - "[ NORMAL ] Iteration 117:\tk_eff = 1.160726\tres = 2.450E-05\n", - "[ NORMAL ] Iteration 118:\tk_eff = 1.160750\tres = 2.231E-05\n", - "[ NORMAL ] Iteration 119:\tk_eff = 1.160771\tres = 2.031E-05\n", - "[ NORMAL ] Iteration 120:\tk_eff = 1.160791\tres = 1.849E-05\n", - "[ NORMAL ] Iteration 121:\tk_eff = 1.160809\tres = 1.684E-05\n", - "[ NORMAL ] Iteration 122:\tk_eff = 1.160825\tres = 1.533E-05\n", - "[ NORMAL ] Iteration 123:\tk_eff = 1.160840\tres = 1.395E-05\n", - "[ NORMAL ] Iteration 124:\tk_eff = 1.160853\tres = 1.270E-05\n", - "[ NORMAL ] Iteration 125:\tk_eff = 1.160865\tres = 1.156E-05\n", - "[ NORMAL ] Iteration 126:\tk_eff = 1.160876\tres = 1.052E-05\n" + "[ NORMAL ] Iteration 0:\tk_eff = 0.685182\tres = 9.665E-317\n", + "[ NORMAL ] Iteration 1:\tk_eff = 0.785638\tres = 3.148E-01\n", + "[ NORMAL ] Iteration 2:\tk_eff = 0.750178\tres = 1.466E-01\n", + "[ NORMAL ] Iteration 3:\tk_eff = 0.728835\tres = 4.513E-02\n", + "[ NORMAL ] Iteration 4:\tk_eff = 0.695616\tres = 2.845E-02\n", + "[ NORMAL ] Iteration 5:\tk_eff = 0.663332\tres = 4.558E-02\n", + "[ NORMAL ] Iteration 6:\tk_eff = 0.632306\tres = 4.641E-02\n", + "[ NORMAL ] Iteration 7:\tk_eff = 0.604144\tres = 4.677E-02\n", + "[ NORMAL ] Iteration 8:\tk_eff = 0.579394\tres = 4.454E-02\n", + "[ NORMAL ] Iteration 9:\tk_eff = 0.558403\tres = 4.097E-02\n", + "[ NORMAL ] Iteration 10:\tk_eff = 0.541346\tres = 3.623E-02\n", + "[ NORMAL ] Iteration 11:\tk_eff = 0.528269\tres = 3.055E-02\n", + "[ NORMAL ] Iteration 12:\tk_eff = 0.519137\tres = 2.416E-02\n", + "[ NORMAL ] Iteration 13:\tk_eff = 0.513827\tres = 1.729E-02\n", + "[ NORMAL ] Iteration 14:\tk_eff = 0.512169\tres = 1.023E-02\n", + "[ NORMAL ] Iteration 15:\tk_eff = 0.513941\tres = 3.227E-03\n", + "[ NORMAL ] Iteration 16:\tk_eff = 0.518887\tres = 3.460E-03\n", + "[ NORMAL ] Iteration 17:\tk_eff = 0.526728\tres = 9.623E-03\n", + "[ NORMAL ] Iteration 18:\tk_eff = 0.537170\tres = 1.511E-02\n", + "[ NORMAL ] Iteration 19:\tk_eff = 0.549909\tres = 1.982E-02\n", + "[ NORMAL ] Iteration 20:\tk_eff = 0.564646\tres = 2.372E-02\n", + "[ NORMAL ] Iteration 21:\tk_eff = 0.581084\tres = 2.680E-02\n", + "[ NORMAL ] Iteration 22:\tk_eff = 0.598939\tres = 2.911E-02\n", + "[ NORMAL ] Iteration 23:\tk_eff = 0.617940\tres = 3.073E-02\n", + "[ NORMAL ] Iteration 24:\tk_eff = 0.637834\tres = 3.172E-02\n", + "[ NORMAL ] Iteration 25:\tk_eff = 0.658386\tres = 3.219E-02\n", + "[ NORMAL ] Iteration 26:\tk_eff = 0.679382\tres = 3.222E-02\n", + "[ NORMAL ] Iteration 27:\tk_eff = 0.700626\tres = 3.189E-02\n", + "[ NORMAL ] Iteration 28:\tk_eff = 0.721946\tres = 3.127E-02\n", + "[ NORMAL ] Iteration 29:\tk_eff = 0.743187\tres = 3.043E-02\n", + "[ NORMAL ] Iteration 30:\tk_eff = 0.764215\tres = 2.942E-02\n", + "[ NORMAL ] Iteration 31:\tk_eff = 0.784913\tres = 2.829E-02\n", + "[ NORMAL ] Iteration 32:\tk_eff = 0.805184\tres = 2.708E-02\n", + "[ NORMAL ] Iteration 33:\tk_eff = 0.824944\tres = 2.583E-02\n", + "[ NORMAL ] Iteration 34:\tk_eff = 0.844126\tres = 2.454E-02\n", + "[ NORMAL ] Iteration 35:\tk_eff = 0.862675\tres = 2.325E-02\n", + "[ NORMAL ] Iteration 36:\tk_eff = 0.880550\tres = 2.197E-02\n", + "[ NORMAL ] Iteration 37:\tk_eff = 0.897720\tres = 2.072E-02\n", + "[ NORMAL ] Iteration 38:\tk_eff = 0.914163\tres = 1.950E-02\n", + "[ NORMAL ] Iteration 39:\tk_eff = 0.929867\tres = 1.832E-02\n", + "[ NORMAL ] Iteration 40:\tk_eff = 0.944826\tres = 1.718E-02\n", + "[ NORMAL ] Iteration 41:\tk_eff = 0.959043\tres = 1.609E-02\n", + "[ NORMAL ] Iteration 42:\tk_eff = 0.972524\tres = 1.505E-02\n", + "[ NORMAL ] Iteration 43:\tk_eff = 0.985280\tres = 1.406E-02\n", + "[ NORMAL ] Iteration 44:\tk_eff = 0.997328\tres = 1.312E-02\n", + "[ NORMAL ] Iteration 45:\tk_eff = 1.008685\tres = 1.223E-02\n", + "[ NORMAL ] Iteration 46:\tk_eff = 1.019373\tres = 1.139E-02\n", + "[ NORMAL ] Iteration 47:\tk_eff = 1.029415\tres = 1.060E-02\n", + "[ NORMAL ] Iteration 48:\tk_eff = 1.038836\tres = 9.851E-03\n", + "[ NORMAL ] Iteration 49:\tk_eff = 1.047661\tres = 9.152E-03\n", + "[ NORMAL ] Iteration 50:\tk_eff = 1.055917\tres = 8.495E-03\n", + "[ NORMAL ] Iteration 51:\tk_eff = 1.063631\tres = 7.881E-03\n", + "[ NORMAL ] Iteration 52:\tk_eff = 1.070830\tres = 7.306E-03\n", + "[ NORMAL ] Iteration 53:\tk_eff = 1.077540\tres = 6.768E-03\n", + "[ NORMAL ] Iteration 54:\tk_eff = 1.083788\tres = 6.266E-03\n", + "[ NORMAL ] Iteration 55:\tk_eff = 1.089599\tres = 5.798E-03\n", + "[ NORMAL ] Iteration 56:\tk_eff = 1.094999\tres = 5.362E-03\n", + "[ NORMAL ] Iteration 57:\tk_eff = 1.100012\tres = 4.956E-03\n", + "[ NORMAL ] Iteration 58:\tk_eff = 1.104662\tres = 4.578E-03\n", + "[ NORMAL ] Iteration 59:\tk_eff = 1.108971\tres = 4.227E-03\n", + "[ NORMAL ] Iteration 60:\tk_eff = 1.112961\tres = 3.901E-03\n", + "[ NORMAL ] Iteration 61:\tk_eff = 1.116653\tres = 3.598E-03\n", + "[ NORMAL ] Iteration 62:\tk_eff = 1.120066\tres = 3.317E-03\n", + "[ NORMAL ] Iteration 63:\tk_eff = 1.123220\tres = 3.057E-03\n", + "[ NORMAL ] Iteration 64:\tk_eff = 1.126132\tres = 2.816E-03\n", + "[ NORMAL ] Iteration 65:\tk_eff = 1.128819\tres = 2.593E-03\n", + "[ NORMAL ] Iteration 66:\tk_eff = 1.131297\tres = 2.386E-03\n", + "[ NORMAL ] Iteration 67:\tk_eff = 1.133581\tres = 2.195E-03\n", + "[ NORMAL ] Iteration 68:\tk_eff = 1.135684\tres = 2.019E-03\n", + "[ NORMAL ] Iteration 69:\tk_eff = 1.137621\tres = 1.856E-03\n", + "[ NORMAL ] Iteration 70:\tk_eff = 1.139403\tres = 1.705E-03\n", + "[ NORMAL ] Iteration 71:\tk_eff = 1.141042\tres = 1.566E-03\n", + "[ NORMAL ] Iteration 72:\tk_eff = 1.142549\tres = 1.438E-03\n", + "[ NORMAL ] Iteration 73:\tk_eff = 1.143933\tres = 1.320E-03\n", + "[ NORMAL ] Iteration 74:\tk_eff = 1.145204\tres = 1.212E-03\n", + "[ NORMAL ] Iteration 75:\tk_eff = 1.146372\tres = 1.111E-03\n", + "[ NORMAL ] Iteration 76:\tk_eff = 1.147443\tres = 1.019E-03\n", + "[ NORMAL ] Iteration 77:\tk_eff = 1.148426\tres = 9.345E-04\n", + "[ NORMAL ] Iteration 78:\tk_eff = 1.149327\tres = 8.564E-04\n", + "[ NORMAL ] Iteration 79:\tk_eff = 1.150153\tres = 7.847E-04\n", + "[ NORMAL ] Iteration 80:\tk_eff = 1.150910\tres = 7.188E-04\n", + "[ NORMAL ] Iteration 81:\tk_eff = 1.151604\tres = 6.582E-04\n", + "[ NORMAL ] Iteration 82:\tk_eff = 1.152239\tres = 6.026E-04\n", + "[ NORMAL ] Iteration 83:\tk_eff = 1.152820\tres = 5.516E-04\n", + "[ NORMAL ] Iteration 84:\tk_eff = 1.153353\tres = 5.047E-04\n", + "[ NORMAL ] Iteration 85:\tk_eff = 1.153840\tres = 4.617E-04\n", + "[ NORMAL ] Iteration 86:\tk_eff = 1.154285\tres = 4.223E-04\n", + "[ NORMAL ] Iteration 87:\tk_eff = 1.154693\tres = 3.862E-04\n", + "[ NORMAL ] Iteration 88:\tk_eff = 1.155065\tres = 3.530E-04\n", + "[ NORMAL ] Iteration 89:\tk_eff = 1.155406\tres = 3.227E-04\n", + "[ NORMAL ] Iteration 90:\tk_eff = 1.155717\tres = 2.949E-04\n", + "[ NORMAL ] Iteration 91:\tk_eff = 1.156002\tres = 2.694E-04\n", + "[ NORMAL ] Iteration 92:\tk_eff = 1.156262\tres = 2.461E-04\n", + "[ NORMAL ] Iteration 93:\tk_eff = 1.156499\tres = 2.248E-04\n", + "[ NORMAL ] Iteration 94:\tk_eff = 1.156716\tres = 2.053E-04\n", + "[ NORMAL ] Iteration 95:\tk_eff = 1.156914\tres = 1.874E-04\n", + "[ NORMAL ] Iteration 96:\tk_eff = 1.157094\tres = 1.711E-04\n", + "[ NORMAL ] Iteration 97:\tk_eff = 1.157259\tres = 1.561E-04\n", + "[ NORMAL ] Iteration 98:\tk_eff = 1.157409\tres = 1.425E-04\n", + "[ NORMAL ] Iteration 99:\tk_eff = 1.157547\tres = 1.300E-04\n", + "[ NORMAL ] Iteration 100:\tk_eff = 1.157672\tres = 1.186E-04\n", + "[ NORMAL ] Iteration 101:\tk_eff = 1.157786\tres = 1.082E-04\n", + "[ NORMAL ] Iteration 102:\tk_eff = 1.157890\tres = 9.868E-05\n", + "[ NORMAL ] Iteration 103:\tk_eff = 1.157985\tres = 8.998E-05\n", + "[ NORMAL ] Iteration 104:\tk_eff = 1.158072\tres = 8.205E-05\n", + "[ NORMAL ] Iteration 105:\tk_eff = 1.158151\tres = 7.480E-05\n", + "[ NORMAL ] Iteration 106:\tk_eff = 1.158223\tres = 6.819E-05\n", + "[ NORMAL ] Iteration 107:\tk_eff = 1.158289\tres = 6.216E-05\n", + "[ NORMAL ] Iteration 108:\tk_eff = 1.158348\tres = 5.665E-05\n", + "[ NORMAL ] Iteration 109:\tk_eff = 1.158403\tres = 5.162E-05\n", + "[ NORMAL ] Iteration 110:\tk_eff = 1.158453\tres = 4.704E-05\n", + "[ NORMAL ] Iteration 111:\tk_eff = 1.158498\tres = 4.286E-05\n", + "[ NORMAL ] Iteration 112:\tk_eff = 1.158539\tres = 3.904E-05\n", + "[ NORMAL ] Iteration 113:\tk_eff = 1.158577\tres = 3.557E-05\n", + "[ NORMAL ] Iteration 114:\tk_eff = 1.158611\tres = 3.240E-05\n", + "[ NORMAL ] Iteration 115:\tk_eff = 1.158642\tres = 2.951E-05\n", + "[ NORMAL ] Iteration 116:\tk_eff = 1.158670\tres = 2.687E-05\n", + "[ NORMAL ] Iteration 117:\tk_eff = 1.158696\tres = 2.447E-05\n", + "[ NORMAL ] Iteration 118:\tk_eff = 1.158720\tres = 2.228E-05\n", + "[ NORMAL ] Iteration 119:\tk_eff = 1.158741\tres = 2.029E-05\n", + "[ NORMAL ] Iteration 120:\tk_eff = 1.158760\tres = 1.847E-05\n", + "[ NORMAL ] Iteration 121:\tk_eff = 1.158778\tres = 1.682E-05\n", + "[ NORMAL ] Iteration 122:\tk_eff = 1.158794\tres = 1.531E-05\n", + "[ NORMAL ] Iteration 123:\tk_eff = 1.158809\tres = 1.393E-05\n", + "[ NORMAL ] Iteration 124:\tk_eff = 1.158822\tres = 1.268E-05\n", + "[ NORMAL ] Iteration 125:\tk_eff = 1.158835\tres = 1.154E-05\n", + "[ NORMAL ] Iteration 126:\tk_eff = 1.158846\tres = 1.051E-05\n" ] } ], @@ -1135,8 +1142,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.161200\n", - "openmoc keff = 1.160876\n", - "bias [pcm]: -32.4\n" + "openmoc keff = 1.158846\n", + "bias [pcm]: -235.5\n" ] } ], @@ -1483,7 +1490,7 @@ " License: http://mit-crpg.github.io/openmc/license.html\n", " Version: 0.7.0\n", " Git SHA1: 21738db07debeabde824c9b955bd3bf0c9a16366\n", - " Date/Time: 2015-10-28 11:38:21\n", + " Date/Time: 2015-10-28 12:12:36\n", " MPI Processes: 1\n", "\n", " ===========================================================================\n", @@ -1590,20 +1597,20 @@ "\n", " =======================> TIMING STATISTICS <=======================\n", "\n", - " Total time for initialization = 4.2400E-01 seconds\n", - " Reading cross sections = 8.5000E-02 seconds\n", - " Total time in simulation = 1.9319E+02 seconds\n", - " Time in transport only = 1.9314E+02 seconds\n", - " Time in inactive batches = 1.3511E+01 seconds\n", - " Time in active batches = 1.7968E+02 seconds\n", - " Time synchronizing fission bank = 1.9000E-02 seconds\n", - " Sampling source sites = 1.1000E-02 seconds\n", - " SEND/RECV source sites = 7.0000E-03 seconds\n", - " Time accumulating tallies = 3.0000E-03 seconds\n", - " Total time for finalization = 9.0000E-03 seconds\n", - " Total time elapsed = 1.9366E+02 seconds\n", - " Calculation Rate (inactive) = 7401.38 neutrons/second\n", - " Calculation Rate (active) = 2226.18 neutrons/second\n", + " Total time for initialization = 1.2980E+00 seconds\n", + " Reading cross sections = 3.1700E-01 seconds\n", + " Total time in simulation = 6.3378E+02 seconds\n", + " Time in transport only = 6.3364E+02 seconds\n", + " Time in inactive batches = 4.2049E+01 seconds\n", + " Time in active batches = 5.9173E+02 seconds\n", + " Time synchronizing fission bank = 5.4000E-02 seconds\n", + " Sampling source sites = 3.9000E-02 seconds\n", + " SEND/RECV source sites = 1.5000E-02 seconds\n", + " Time accumulating tallies = 4.0000E-03 seconds\n", + " Total time for finalization = 2.5000E-02 seconds\n", + " Total time elapsed = 6.3523E+02 seconds\n", + " Calculation Rate (inactive) = 2378.18 neutrons/second\n", + " Calculation Rate (active) = 675.978 neutrons/second\n", "\n", " ============================> RESULTS <============================\n", "\n", @@ -1990,7 +1997,7 @@ "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2299,8 +2306,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.223863\n", - "openmoc keff = 1.222517\n", - "bias [pcm]: -134.7\n" + "openmoc keff = 1.220753\n", + "bias [pcm]: -311.0\n" ] } ], @@ -2393,8 +2400,8 @@ "output_type": "stream", "text": [ "openmc keff = 1.223863\n", - "openmoc keff = 1.225691\n", - "bias [pcm]: 182.7\n" + "openmoc keff = 1.223860\n", + "bias [pcm]: -0.3\n" ] } ], diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 7f34f8856..880b838cc 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1286,7 +1286,7 @@ class TotalXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(TotalXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'total'] @@ -1333,7 +1333,7 @@ class TransportXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(TransportXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'total', 'scatter-P1'] @@ -1386,7 +1386,7 @@ class AbsorptionXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(AbsorptionXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'absorption'] @@ -1439,7 +1439,7 @@ class CaptureXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(CaptureXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'absorption', 'fission'] @@ -1486,7 +1486,7 @@ class FissionXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(FissionXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'fission'] @@ -1532,7 +1532,7 @@ class NuFissionXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(NuFissionXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'nu-fission'] @@ -1578,7 +1578,7 @@ class ScatterXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(ScatterXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'scatter'] @@ -1624,7 +1624,7 @@ class NuScatterXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(NuScatterXS, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['flux', 'nu-scatter'] @@ -1687,7 +1687,7 @@ class ScatterMatrixXS(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(ScatterMatrixXS, self).tallies is None: group_edges = self.energy_groups.group_edges energy = openmc.Filter('energy', group_edges) @@ -2006,7 +2006,7 @@ class NuScatterMatrixXS(ScatterMatrixXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(NuScatterMatrixXS, self).tallies is None: # Create the non-domain specific Filters for the Tallies group_edges = self.energy_groups.group_edges @@ -2050,7 +2050,7 @@ class Chi(MGXS): """ # Instantiate tallies if they do not exist - if self._tallies is None: + if super(Chi, self).tallies is None: # Create a list of scores for each Tally to be created scores = ['nu-fission', 'nu-fission'] diff --git a/tests/test_mgxs_library_condense/inputs_true.dat b/tests/test_mgxs_library_condense/inputs_true.dat index 37397c594..f681e5ff7 100644 --- a/tests/test_mgxs_library_condense/inputs_true.dat +++ b/tests/test_mgxs_library_condense/inputs_true.dat @@ -1 +1 @@ -35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77 \ No newline at end of file +7e5c0de6e50c494abeea443d74606db809d74ce8bb2571eb4e1c98b3c9a33885b0aef2a4a82b6f95a1725b078d4a5ff01f68e1cc72addbd2d6bd0fb8251ad2e7 \ 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 37397c594..f681e5ff7 100644 --- a/tests/test_mgxs_library_hdf5/inputs_true.dat +++ b/tests/test_mgxs_library_hdf5/inputs_true.dat @@ -1 +1 @@ -35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77 \ No newline at end of file +7e5c0de6e50c494abeea443d74606db809d74ce8bb2571eb4e1c98b3c9a33885b0aef2a4a82b6f95a1725b078d4a5ff01f68e1cc72addbd2d6bd0fb8251ad2e7 \ No newline at end of file diff --git a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py index c54be05e9..642073104 100644 --- a/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py +++ b/tests/test_mgxs_library_hdf5/test_mgxs_library_hdf5.py @@ -53,7 +53,7 @@ class MGXSTestHarness(PyAPITestHarness): self.mgxs_lib.load_from_statepoint(sp) # Export the MGXS Library to an HDF5 file - self.mgxs_lib.build_hdf5_store(filename='mgxs', directory='.') + self.mgxs_lib.build_hdf5_store(directory='.') # Open the MGXS HDF5 file f = h5py.File('mgxs.h5', 'r') diff --git a/tests/test_mgxs_library_no_nuclides/inputs_true.dat b/tests/test_mgxs_library_no_nuclides/inputs_true.dat index 37397c594..f681e5ff7 100644 --- a/tests/test_mgxs_library_no_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_no_nuclides/inputs_true.dat @@ -1 +1 @@ -35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77 \ No newline at end of file +7e5c0de6e50c494abeea443d74606db809d74ce8bb2571eb4e1c98b3c9a33885b0aef2a4a82b6f95a1725b078d4a5ff01f68e1cc72addbd2d6bd0fb8251ad2e7 \ 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 2e299773a..7c064c3c1 100644 --- a/tests/test_mgxs_library_nuclides/inputs_true.dat +++ b/tests/test_mgxs_library_nuclides/inputs_true.dat @@ -1 +1 @@ -7c1deb8a54fbe1a1ce6ef27cea4a11995210ad3e5ecf32bd83d7c80041edf0793378a7325ffe7ebf9c537e9c278fd4545642fec6c1e46b9c5418118f035d5e95 \ No newline at end of file +04dcfca7d68981d7ec19d428c541acd6345ec2d608c581d56ce21d23548f52977fe713b5cdd7434bebf62067444d6562ef322175736a6a63e3985e5e48718081 \ No newline at end of file From 6e3deb8f3c6cd48b822ee0c7ef68df93396a67da Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Wed, 28 Oct 2015 12:27:28 -0400 Subject: [PATCH 130/130] Removed no unused correction parameter to ScatterMatrixXS.compute_xs(...) routine --- openmc/mgxs/mgxs.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/openmc/mgxs/mgxs.py b/openmc/mgxs/mgxs.py index 880b838cc..9e2fcbf00 100644 --- a/openmc/mgxs/mgxs.py +++ b/openmc/mgxs/mgxs.py @@ -1715,17 +1715,9 @@ class ScatterMatrixXS(MGXS): cv.check_value('correction', correction, ('P0', None)) self._correction = correction - def compute_xs(self, correction='P0'): + def compute_xs(self): """Computes the multi-group scattering matrix using OpenMC - tally arithmetic. - - Parameters - ---------- - correction : {'P0' or None} - If 'P0', applies the P0 transport correction to the diagonal of the - scattering matrix. - - """ + tally arithmetic.""" # If using P0 correction subtract scatter-P1 from the diagonal if self.correction == 'P0':