From 925d227d1fd64b552c07eb5972525e3350c28874 Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 13 Sep 2015 01:34:54 -0400 Subject: [PATCH] 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 56af455e8e..cd3302e2ab 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 221dc28547..bccfd2eb59 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