mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 14:15:42 -04:00
Fixed num score bins update in Tally.get_slice(...) routine. Need to cleanup filter reset in Tally.summation(...)
This commit is contained in:
parent
efb3c0488f
commit
1d9af02f85
1 changed files with 14 additions and 2 deletions
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue