From f52d2ac18cd2a19a3419ad3e52dd00c9b7848deb Mon Sep 17 00:00:00 2001 From: Will Boyd Date: Sun, 28 Oct 2018 20:05:57 -0400 Subject: [PATCH] Added pre-defined CASMO energy group structures to openmx.mgxs module --- openmc/mgxs/groups.py | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/openmc/mgxs/groups.py b/openmc/mgxs/groups.py index 338bc4b00c..d6e7ca9aa0 100644 --- a/openmc/mgxs/groups.py +++ b/openmc/mgxs/groups.py @@ -77,6 +77,68 @@ class EnergyGroups(object): cv.check_greater_than('number of group edges', len(edges), 1) self._group_edges = np.array(edges) + @staticmethod + def get_energy_groups(name): + """Returns one of many commonly used and energy group structures. + + Parameters + ---------- + name : str + The name of the energy group structure. Pre-defined structures + include "CASMO-X" (where X is 2, 4, 8, 16, 25, 40 or 70). + + Returns + ------- + EnergyGroups + The energy group structure + + """ + + if name == "CASMO-2": + group_edges = np.array([ + 0., 6.25e-1, 2.e7]) + elif name == "CASMO-4": + group_edges = np.array([ + 0., 6.25e-1, 5.53e3, 8.21e5, 2.e7]) + elif name == "CASMO-8": + group_edges = np.array([ + 0., 5.8e-2, 1.4e-1, 2.8e-1, 6.25e-1, 4., 5.53e3, 8.21e5, 2.e7]) + elif name == "CASMO-16": + group_edges = np.array([ + 0., 3.e-2, 5.8e-2, 1.4e-1, 2.8e-1, 3.5e-1, 6.25e-1, 8.5e-1, + 9.72e-1, 1.02, 1.097, 1.15, 1.3, 4., 5.53e3, 8.21e5, 2.e7]) + elif name == "CASMO-25": + group_edges = np.array([ + 0., 3.e-2, 5.8e-2, 1.4e-1, 2.8e-1, 3.5e-1, 6.25e-1, 9.72e-1, + 1.02, 1.097, 1.15, 1.855, 4., 9.877, 1.5968e1, 1.4873e2, + 5.53e3, 9.118e3, 1.11e5, 5.e5, 8.21e5, 1.353e6, 2.231e6, + 3.679e6, 6.0655e6, 2.e7]) + elif name == "CASMO-40": + group_edges = np.array([ + 0., 1.5e-2, 3.e-2, 4.2e-2, 5.8e-2, 8.e-2, 1.e-1, 1.4e-1, + 1.8e-1, 2.2e-1, 2.8e-1, 3.5e-1, 6.25e-1, 8.5e-1, 9.5e-1, + 9.72e-1, 1.02, 1.097, 1.15, 1.3, 1.5, 1.855, 2.1, 2.6, 3.3, 4., + 9.877, 1.5968e1, 2.77e1, 4.8052e1, 1.4873e2, 5.53e3, 9.118e3, + 1.11e5, 5.e5, 8.21e5, 1.353e6, 2.231e6, 3.679e6, 6.0655e6, + 2.e7]) + elif name == "CASMO-70": + group_edges = np.array([ + 0., 5.e-3, 1.e-2, 1.5e-2, 2.e-2, 2.5e-2, 3.e-2, 3.5e-2, 4.2e-2, + 5.e-2, 5.8e-2, 6.7e-2, 8.e-2, 1.e-1, 1.4e-1, 1.8e-1, 2.2e-1, + 2.5e-1, 2.8e-1, 3.e-1, 3.2e-1, 3.5e-1, 4.e-1, 5.e-1, 6.25e-1, + 7.8e-1, 8.5e-1, 9.1e-1, 9.5e-1, 9.72e-1, 9.96e-6, 1.02, 1.045, + 1.071, 1.097, 1.123, 1.15, 1.3, 1.5, 1.855, 2.1, 2.6, 3.3, 4., + 9.877, 1.5968e1, 2.77e1, 4.8052e1, 7.5501e1, 1.4873e2, + 3.6726e2, 9.069e-2, 1.4251e3, 2.2395e3, 3.5191e3, 5.53e3, + 9.1183e3, 1.503e4, 2.478e4, 4.085e4, 6.734e4, 1.11e5, 1.83e5, + 3.025e5, 5.e5, 8.21e5, 1.353e6, 2.231e6, 3.679e6, 6.0655e6, + 2.e7]) + else: + raise ValueError(f"Energy group structure \"{name}\" is not recognized") + + energy_groups = EnergyGroups(group_edges) + return energy_groups + def get_group(self, energy): """Returns the energy group in which the given energy resides.