From 3e995e0df691f81ff9fc1ad7ed1340a69d8926e0 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Fri, 20 Mar 2020 15:19:53 -0500 Subject: [PATCH] Changes in geometry.py from PullRequest Inc. review --- openmc/geometry.py | 93 +++++++++++----------------------------------- 1 file changed, 21 insertions(+), 72 deletions(-) diff --git a/openmc/geometry.py b/openmc/geometry.py index 4b650f2e3e..c3d2cd76b8 100644 --- a/openmc/geometry.py +++ b/openmc/geometry.py @@ -410,6 +410,23 @@ class Geometry: for keep, *redundant in tally.values() for replace in redundant} + def _get_domains_by_name(self, name, case_sensitive, matching, domain_type): + if not case_sensitive: + name = name.lower() + + domains = [] + + func = getattr(self, 'get_all_{}s'.format(domain_type)) + for domain in func().values(): + domain_name = domain.name if case_sensitive else domain.name.lower() + if domain_name == name: + domains.append(domain) + elif not matching and name in domain_name: + domains.append(domain) + + domains.sort(key=lambda x: x.id) + return domains + def get_materials_by_name(self, name, case_sensitive=False, matching=False): """Return a list of materials with matching names. @@ -429,24 +446,7 @@ class Geometry: Materials matching the queried name """ - - if not case_sensitive: - name = name.lower() - - all_materials = self.get_all_materials().values() - materials = set() - - for material in all_materials: - material_name = material.name - if not case_sensitive: - material_name = material_name.lower() - - if material_name == name: - materials.add(material) - elif not matching and name in material_name: - materials.add(material) - - return sorted(materials, key=lambda x: x.id) + return self._get_domains_by_name(name, case_sensitive, matching, 'material') def get_cells_by_name(self, name, case_sensitive=False, matching=False): """Return a list of cells with matching names. @@ -467,24 +467,7 @@ class Geometry: Cells matching the queried name """ - - if not case_sensitive: - name = name.lower() - - all_cells = self.get_all_cells().values() - cells = set() - - for cell in all_cells: - cell_name = cell.name - if not case_sensitive: - cell_name = cell_name.lower() - - if cell_name == name: - cells.add(cell) - elif not matching and name in cell_name: - cells.add(cell) - - return sorted(cells, key=lambda x: x.id) + return self._get_domains_by_name(name, case_sensitive, matching, 'cell') def get_cells_by_fill_name(self, name, case_sensitive=False, matching=False): """Return a list of cells with fills with matching names. @@ -550,24 +533,7 @@ class Geometry: Universes matching the queried name """ - - if not case_sensitive: - name = name.lower() - - all_universes = self.get_all_universes().values() - universes = set() - - for universe in all_universes: - universe_name = universe.name - if not case_sensitive: - universe_name = universe_name.lower() - - if universe_name == name: - universes.add(universe) - elif not matching and name in universe_name: - universes.add(universe) - - return sorted(universes, key=lambda x: x.id) + return self._get_domains_by_name(name, case_sensitive, matching, 'universe') def get_lattices_by_name(self, name, case_sensitive=False, matching=False): """Return a list of lattices with matching names. @@ -588,24 +554,7 @@ class Geometry: Lattices matching the queried name """ - - if not case_sensitive: - name = name.lower() - - all_lattices = self.get_all_lattices().values() - lattices = set() - - for lattice in all_lattices: - lattice_name = lattice.name - if not case_sensitive: - lattice_name = lattice_name.lower() - - if lattice_name == name: - lattices.add(lattice) - elif not matching and name in lattice_name: - lattices.add(lattice) - - return sorted(lattices, key=lambda x: x.id) + return self._get_domains_by_name(name, case_sensitive, matching, 'lattice') def remove_redundant_surfaces(self): """Remove redundant surfaces from the geometry"""