From 39bc94a1a1f0182a6e5fdefa8f91d98454b4af86 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Sat, 8 Apr 2023 15:21:59 +0200 Subject: [PATCH] Allow mgxs.EnergyGroups() to accept group structure name --- openmc/mgxs/groups.py | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index d49f2d651e..eaef519da1 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -5,30 +5,36 @@ from numbers import Real import numpy as np import openmc.checkvalue as cv +import openmc.mgxs class EnergyGroups: - """An energy groups structure used for multi-group cross-sections. + """An energy group structure used for multigroup cross-sections. Parameters ---------- - group_edges : Iterable of Real - The energy group boundaries [eV] + group_edges : Iterable of float or str + The energy group boundaries in [eV] or the name of the group structure + (Must be a valid key in the openmc.mgxs.GROUP_STRUCTURES dictionary). + + .. versionchanged:: 0.13.4 + Changed to allow a string specifying the group structure name. Attributes ---------- - group_edges : Iterable of Real - The energy group boundaries [eV] + group_edges : np.ndarray + The energy group boundaries in [eV] num_groups : int The number of energy groups """ - def __init__(self, group_edges=None): - self._group_edges = None + def __init__(self, group_edges): + if isinstance(group_edges, str): + self._name = group_edges.upper() + group_edges = openmc.mgxs.GROUP_STRUCTURES[self._name] - if group_edges is not None: - self.group_edges = group_edges + self.group_edges = group_edges def __deepcopy__(self, memo): existing = memo.get(id(self)) @@ -59,6 +65,12 @@ class EnergyGroups: def __hash__(self): return hash(tuple(self.group_edges)) + def __repr__(self): + if hasattr(self, '_name'): + return f"" + else: + return f"" + @property def group_edges(self): return self._group_edges @@ -226,10 +238,7 @@ class EnergyGroups: group_edges = np.sort(group_edges) # Create a new condensed EnergyGroups object - condensed_groups = EnergyGroups() - condensed_groups.group_edges = group_edges - - return condensed_groups + return EnergyGroups(group_edges) def can_merge(self, other): """Determine if energy groups can be merged with another.