From dfd7bb9437836ae9bbf783f948ea0545642b6ecb Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Thu, 13 Sep 2018 07:18:47 -0500 Subject: [PATCH] Rename summed -> redundant to make ENDF language --- docs/source/io_formats/nuclear_data.rst | 1 + examples/jupyter/nuclear-data.ipynb | 4 +- include/openmc/reaction.h | 4 +- openmc/data/function.py | 2 +- openmc/data/neutron.py | 62 ++++++++++++------------- openmc/data/photon.py | 12 ++--- openmc/data/reaction.py | 22 ++++----- src/nuclide_header.F90 | 6 +-- src/reaction.cpp | 6 +-- src/reaction_header.F90 | 14 +++--- 10 files changed, 67 insertions(+), 66 deletions(-) diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst index 87b700371..5595f2061 100644 --- a/docs/source/io_formats/nuclear_data.rst +++ b/docs/source/io_formats/nuclear_data.rst @@ -44,6 +44,7 @@ temperature-dependent data set. For example, the data set corresponding to - **center_of_mass** (*int*) -- Whether the reference frame for scattering is center-of-mass (1) or laboratory (0) - **n_product** (*int*) -- Number of reaction products + - **redundant** (*int*) -- Whether reaction is redundant **//reactions/reaction_/K/** diff --git a/examples/jupyter/nuclear-data.ipynb b/examples/jupyter/nuclear-data.ipynb index 726de6f3e..91923faa1 100644 --- a/examples/jupyter/nuclear-data.ipynb +++ b/examples/jupyter/nuclear-data.ipynb @@ -621,7 +621,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There is also `summed_reactions` attribute for cross sections (like total) which are built from summing up other cross sections." + "There is also `redundant_reactions` attribute for cross sections (like total) which are built from summing up other cross sections." ] }, { @@ -640,7 +640,7 @@ } ], "source": [ - "pprint(list(gd157.summed_reactions.values()))" + "pprint(list(gd157.redundant_reactions.values()))" ] }, { diff --git a/include/openmc/reaction.h b/include/openmc/reaction.h index 9e8475227..1015a4ad2 100644 --- a/include/openmc/reaction.h +++ b/include/openmc/reaction.h @@ -34,7 +34,7 @@ public: int mt_; //!< ENDF MT value double q_value_; //!< Reaction Q value in [eV] bool scatter_in_cm_; //!< scattering system in center-of-mass? - bool summed_; //!< summed reaction? + bool redundant_; //!< redundant reaction? std::vector xs_; //!< Cross section at each temperature std::vector products_; //!< Reaction products }; @@ -49,7 +49,7 @@ extern "C" { int reaction_mt(Reaction* rx); double reaction_q_value(Reaction* rx); bool reaction_scatter_in_cm(Reaction* rx); - bool reaction_summed(Reaction* rx); + bool reaction_redundant(Reaction* rx); double reaction_product_decay_rate(Reaction* rx, int product); int reaction_product_emission_mode(Reaction* rx, int product); int reaction_product_particle(Reaction* rx, int product); diff --git a/openmc/data/function.py b/openmc/data/function.py index f7636f25c..3362040dc 100644 --- a/openmc/data/function.py +++ b/openmc/data/function.py @@ -502,7 +502,7 @@ class Sum(EqualityMixin): """Sum of multiple functions. This class allows you to create a callable object which represents the sum - of other callable objects. This is used for summed reactions whereby the + of other callable objects. This is used for redundant reactions whereby the cross section is defined as the sum of other cross sections. Parameters diff --git a/openmc/data/neutron.py b/openmc/data/neutron.py index 2b4129250..6d7218d40 100644 --- a/openmc/data/neutron.py +++ b/openmc/data/neutron.py @@ -86,8 +86,8 @@ class IncidentNeutron(EqualityMixin): Resonance parameters resonance_covariance : openmc.data.ResonanceCovariance or None Covariance for resonance parameters - summed_reactions : collections.OrderedDict - Contains summed cross sections, e.g., the total cross section. The keys + redundant_reactions : collections.OrderedDict + Contains redundant cross sections, e.g., the total cross section. The keys are the MT values and the values are Reaction objects. temperatures : list of str List of string representations the temperatures of the target nuclide @@ -113,18 +113,18 @@ class IncidentNeutron(EqualityMixin): self.energy = {} self._fission_energy = None self.reactions = OrderedDict() - self.summed_reactions = OrderedDict() + self.redundant_reactions = OrderedDict() self._urr = {} self._resonances = None def __contains__(self, mt): - return mt in self.reactions or mt in self.summed_reactions + return mt in self.reactions or mt in self.redundant_reactions def __getitem__(self, mt): if mt in self.reactions: return self.reactions[mt] - elif mt in self.summed_reactions: - return self.summed_reactions[mt] + elif mt in self.redundant_reactions: + return self.redundant_reactions[mt] else: raise KeyError('No reaction with MT={}.'.format(mt)) @@ -171,8 +171,8 @@ class IncidentNeutron(EqualityMixin): return self._resonance_covariance @property - def summed_reactions(self): - return self._summed_reactions + def redundant_reactions(self): + return self._redundant_reactions @property def urr(self): @@ -237,10 +237,10 @@ class IncidentNeutron(EqualityMixin): res_cov.ResonanceCovariances) self._resonance_covariance = resonance_covariance - @summed_reactions.setter - def summed_reactions(self, summed_reactions): - cv.check_type('summed reactions', summed_reactions, Mapping) - self._summed_reactions = summed_reactions + @redundant_reactions.setter + def redundant_reactions(self, redundant_reactions): + cv.check_type('redundant reactions', redundant_reactions, Mapping) + self._redundant_reactions = redundant_reactions @urr.setter def urr(self, urr): @@ -287,8 +287,8 @@ class IncidentNeutron(EqualityMixin): # Add energy grid self.energy[strT] = data.energy[strT] - # Add normal and summed reactions - for mt in chain(data.reactions, data.summed_reactions): + # Add normal and redundant reactions + for mt in chain(data.reactions, data.redundant_reactions): if mt in self: self[mt].xs[strT] = data[mt].xs[strT] else: @@ -392,7 +392,7 @@ class IncidentNeutron(EqualityMixin): self[2].xs['0K'] = Tabulated1D(x, y) def get_reaction_components(self, mt): - """Determine what reactions make up summed reaction. + """Determine what reactions make up redundant reaction. Parameters ---------- @@ -402,7 +402,7 @@ class IncidentNeutron(EqualityMixin): Returns ------- mts : list of int - ENDF MT numbers of reactions that make up the summed reaction and + ENDF MT numbers of reactions that make up the redundant reaction and have cross sections provided. """ @@ -480,8 +480,8 @@ class IncidentNeutron(EqualityMixin): tgroup = g.create_group('total_nu') rx.derived_products[0].to_hdf5(tgroup) - # Write summed reaction data only for reactions with photon production - for rx in self.summed_reactions.values(): + # Write redundant reaction data only for reactions with photon production + for rx in self.redundant_reactions.values(): if any([p.particle == 'photon' for p in rx.products]): rx_group = rxs_group.create_group('reaction_{:03}'.format(rx.mt)) rx.to_hdf5(rx_group) @@ -561,8 +561,8 @@ class IncidentNeutron(EqualityMixin): for name, obj in sorted(rxs_group.items()): if name.startswith('reaction_'): rx = Reaction.from_hdf5(obj, data.energy) - if rx.summed: - data.summed_reactions[rx.mt] = rx + if rx.redundant: + data.redundant_reactions[rx.mt] = rx else: data.reactions[rx.mt] = rx @@ -571,13 +571,13 @@ class IncidentNeutron(EqualityMixin): tgroup = group['total_nu'] rx.derived_products.append(Product.from_hdf5(tgroup)) - # Build summed reactions. Start from the highest MT number because + # Build redundant reactions. Start from the highest MT number because # high MTs never depend on lower MTs. for mt_sum in sorted(SUM_RULES, reverse=True): if mt_sum not in data: rxs = [data[mt] for mt in SUM_RULES[mt_sum] if mt in data] if len(rxs) > 0: - data.summed_reactions[mt_sum] = rx = Reaction(mt_sum) + data.redundant_reactions[mt_sum] = rx = Reaction(mt_sum) if rx.mt == 18 and 'total_nu' in group: tgroup = group['total_nu'] rx.derived_products.append(Product.from_hdf5(tgroup)) @@ -650,17 +650,17 @@ class IncidentNeutron(EqualityMixin): absorption_xs = ace.xss[ace.jxs[1] + 2 * n_energy:ace.jxs[1] + 3 * n_energy] - # Create summed reactions (total and absorption) + # Create redundant reactions (total and absorption) total = Reaction(1) total.xs[strT] = Tabulated1D(energy, total_xs) - total.summed = True - data.summed_reactions[1] = total + total.redundant = True + data.redundant_reactions[1] = total if np.count_nonzero(absorption_xs) > 0: absorption = Reaction(27) absorption.xs[strT] = Tabulated1D(energy, absorption_xs) - absorption.summed = True - data.summed_reactions[27] = absorption + absorption.redundant = True + data.redundant_reactions[27] = absorption # Read each reaction n_reaction = ace.nxs[4] + 1 @@ -686,7 +686,7 @@ class IncidentNeutron(EqualityMixin): if mt == 18: continue - # Create summed reaction with appropriate cross section + # Create redundant reaction with appropriate cross section rx = Reaction(mt) mts = data.get_reaction_components(mt) if len(mts) == 0: @@ -699,11 +699,11 @@ class IncidentNeutron(EqualityMixin): else 0 for xs in xss]) rx.xs[strT] = Tabulated1D(energy[idx:], Sum(xss)(energy[idx:])) rx.xs[strT]._threshold_idx = idx - rx.summed = True + rx.redundant = True - # Determine summed cross section + # Determine redundant cross section rx.products += _get_photon_products_ace(ace, rx) - data.summed_reactions[mt] = rx + data.redundant_reactions[mt] = rx # Read unresolved resonance probability tables urr = ProbabilityTables.from_ace(ace) diff --git a/openmc/data/photon.py b/openmc/data/photon.py index 6e76d10ba..3de325d32 100644 --- a/openmc/data/photon.py +++ b/openmc/data/photon.py @@ -372,8 +372,8 @@ class IncidentPhoton(EqualityMixin): excitation energy), 's_collision' (collision stopping power in [eV cm\ :sup:`2`/g]), and 's_radiative' (radiative stopping power in [eV cm\ :sup:`2`/g]) - summed_reactions : collections.OrderedDict - Contains summed cross sections. The keys are MT values and the values + redundant_reactions : collections.OrderedDict + Contains redundant cross sections. The keys are MT values and the values are instances of :class:`PhotonReaction`. """ @@ -382,19 +382,19 @@ class IncidentPhoton(EqualityMixin): self.atomic_number = atomic_number self._atomic_relaxation = None self.reactions = OrderedDict() - self.summed_reactions = OrderedDict() + self.redundant_reactions = OrderedDict() self.compton_profiles = {} self.stopping_powers = {} self.bremsstrahlung = {} def __contains__(self, mt): - return mt in self.reactions or mt in self.summed_reactions + return mt in self.reactions or mt in self.redundant_reactions def __getitem__(self, mt): if mt in self.reactions: return self.reactions[mt] - elif mt in self.summed_reactions: - return self.summed_reactions[mt] + elif mt in self.redundant_reactions: + return self.redundant_reactions[mt] else: raise KeyError('No reaction with MT={}.'.format(mt)) diff --git a/openmc/data/reaction.py b/openmc/data/reaction.py index 2bffdc43a..26b51363f 100644 --- a/openmc/data/reaction.py +++ b/openmc/data/reaction.py @@ -785,8 +785,8 @@ class Reaction(EqualityMixin): Indicates whether scattering kinematics should be performed in the center-of-mass or laboratory reference frame. grid above the threshold value in barns. - summed : bool - Indicates whether or not this is a summed reactions + redundant : bool + Indicates whether or not this is a redundant reaction mt : int The ENDF MT number for this reaction. q_value : float @@ -805,7 +805,7 @@ class Reaction(EqualityMixin): def __init__(self, mt): self._center_of_mass = True - self._summed = False + self._redundant = False self._q_value = 0. self._xs = {} self._products = [] @@ -824,8 +824,8 @@ class Reaction(EqualityMixin): return self._center_of_mass @property - def summed(self): - return self._summed + def redundant(self): + return self._redundant @property def q_value(self): @@ -848,10 +848,10 @@ class Reaction(EqualityMixin): cv.check_type('center of mass', center_of_mass, (bool, np.bool_)) self._center_of_mass = center_of_mass - @summed.setter - def summed(self, summed): - cv.check_type('summed', summed, (bool, np.bool_)) - self._summed = summed + @redundant.setter + def redundant(self, redundant): + cv.check_type('redundant', redundant, (bool, np.bool_)) + self._redundant = redundant @q_value.setter def q_value(self, q_value): @@ -894,7 +894,7 @@ class Reaction(EqualityMixin): group.attrs['label'] = np.string_(self.mt) group.attrs['Q_value'] = self.q_value group.attrs['center_of_mass'] = 1 if self.center_of_mass else 0 - group.attrs['summed'] = 1 if self.summed else 0 + group.attrs['redundant'] = 1 if self.redundant else 0 for T in self.xs: Tgroup = group.create_group(T) if self.xs[T] is not None: @@ -931,7 +931,7 @@ class Reaction(EqualityMixin): rx = cls(mt) rx.q_value = group.attrs['Q_value'] rx.center_of_mass = bool(group.attrs['center_of_mass']) - rx.summed = bool(group.attrs['summed']) + rx.redundant = bool(group.attrs['redundant']) # Read cross section at each temperature for T, Tgroup in group.items(): diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 8d1db8f2e..9eb50e663 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -477,7 +477,7 @@ contains MTs % data(i) /= N_NF .and. MTs % data(i) /= N_2NF .and. & MTs % data(i) /= N_3NF .and. MTs % data(i) < 200 .and. & MTs % data(i) /= N_LEVEL .and. MTs % data(i) /= ELASTIC .and. & - .not. this % reactions(i) % summed) then + .not. this % reactions(i) % redundant) then call index_inelastic_scatter % push_back(i) end if @@ -653,8 +653,8 @@ contains if (rx % MT >= N_A0 .and. rx % MT <= N_AC .and. find(MTs, N_A) /= -1) cycle if (rx % MT >= N_2N0 .and. rx % MT <= N_2NC .and. find(MTs, N_2N) /= -1) cycle - ! Skip summed reactions, which are used for photon production - if (rx % summed) cycle + ! Skip redundant reactions, which are used for photon production + if (rx % redundant) cycle ! Add contribution to total cross section do k = j, j + n - 1 diff --git a/src/reaction.cpp b/src/reaction.cpp index a625b9686..3539fed1a 100644 --- a/src/reaction.cpp +++ b/src/reaction.cpp @@ -17,8 +17,8 @@ Reaction::Reaction(hid_t group, const std::vector& temperatures) int tmp; read_attribute(group, "center_of_mass", tmp); scatter_in_cm_ = (tmp == 1); - read_attribute(group, "summed", tmp); - summed_ = (tmp == 1); + read_attribute(group, "redundant", tmp); + redundant_ = (tmp == 1); // Read cross section and threshold_idx data for (auto t : temperatures) { @@ -87,7 +87,7 @@ double reaction_q_value(Reaction* rx) { return rx->q_value_; } bool reaction_scatter_in_cm(Reaction* rx) { return rx->scatter_in_cm_; } -bool reaction_summed(Reaction* rx) { return rx->summed_; } +bool reaction_redundant(Reaction* rx) { return rx->redundant_; } double reaction_product_decay_rate(Reaction* rx, int product) { diff --git a/src/reaction_header.F90 b/src/reaction_header.F90 index f58fa1035..9d6add0f0 100644 --- a/src/reaction_header.F90 +++ b/src/reaction_header.F90 @@ -20,13 +20,13 @@ module reaction_header integer(C_INT) :: MT ! ENDF MT value real(C_DOUBLE) :: Q_value ! Reaction Q value logical(C_BOOL) :: scatter_in_cm ! scattering system in center-of-mass? - logical(C_BOOL) :: summed ! summed reaction? + logical(C_BOOL) :: redundant ! redundant reaction? contains procedure :: from_hdf5 procedure :: mt_ procedure :: q_value_ procedure :: scatter_in_cm_ - procedure :: summed_ + procedure :: redundant_ procedure :: product_decay_rate procedure :: product_emission_mode procedure :: product_particle @@ -66,7 +66,7 @@ module reaction_header logical(C_BOOL) :: b end function - function reaction_summed(ptr) result(b) bind(C) + function reaction_redundant(ptr) result(b) bind(C) import C_PTR, C_BOOL type(C_PTR), value :: ptr logical(C_BOOL) :: b @@ -167,7 +167,7 @@ contains this % MT = reaction_mt(this % ptr) this % Q_value = reaction_q_value(this % ptr) this % scatter_in_cm = reaction_scatter_in_cm(this % ptr) - this % summed = reaction_summed(this % ptr) + this % redundant = reaction_redundant(this % ptr) end subroutine from_hdf5 function mt_(this) result(mt) @@ -191,11 +191,11 @@ contains cm = reaction_scatter_in_cm(this % ptr) end function - function summed_(this) result(summed) + function redundant_(this) result(redundant) class (Reaction), intent(in) :: this - logical(C_BOOL) :: summed + logical(C_BOOL) :: redundant - summed = reaction_summed(this % ptr) + redundant = reaction_redundant(this % ptr) end function pure function product_decay_rate(this, product) result(rate)