From ed36017015981231aff334ed5791123abee233f2 Mon Sep 17 00:00:00 2001 From: billingsley-john Date: Thu, 26 Mar 2020 10:22:56 +0000 Subject: [PATCH 1/4] added get_elements function and tests --- openmc/material.py | 12 +++++++++++ tests/unit_tests/test_material.py | 33 +++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/openmc/material.py b/openmc/material.py index 8826aa30a3..66502a65e1 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -722,6 +722,18 @@ class Material(IDManagerMixin): def make_isotropic_in_lab(self): self.isotropic = [x[0] for x in self._nuclides] + def get_elements(self): + """Returns all elements in the material + + Returns + ------- + elements : list of str + List of element names + + """ + + return list({re.split(r'(\d+)', i)[0] for i in self.get_nuclides()}) + def get_nuclides(self): """Returns all nuclides in the material diff --git a/tests/unit_tests/test_material.py b/tests/unit_tests/test_material.py index c47faee8cd..546ee47885 100644 --- a/tests/unit_tests/test_material.py +++ b/tests/unit_tests/test_material.py @@ -223,6 +223,39 @@ def test_isotropic(): assert m2.isotropic == ['H1'] +def test_get_elements(): + # test that zero elements exist on creation + m = openmc.Material() + assert len(m.get_elements()) == 0 + + # test addition of a single element + m.add_element('Li', 0.2) + assert len(m.get_elements()) == 1 + assert 'Li' in m.get_elements() + + # test that adding the same element + m.add_element('Li', 0.3) + assert len(m.get_elements()) == 1 + assert 'Li' in m.get_elements() + + # test adding another element + m.add_element('Si', 0.3) + assert len(m.get_elements()) == 2 + assert 'Si' in m.get_elements() + + # test adding a third element + m.add_element('O', 0.4) + assert len(m.get_elements()) == 3 + + # test removal of nuclides + m.remove_nuclide('O16') + m.remove_nuclide('O17') + assert 'O' not in m.get_elements() + assert 'Si' in m.get_elements() + assert 'Li' in m.get_elements() + assert len(m.get_elements()) == 2 + + def test_get_nuclide_densities(uo2): nucs = uo2.get_nuclide_densities() for nuc, density, density_type in nucs.values(): From 1c3373ce61df05e2337808a2fd771fc4c1a6c212 Mon Sep 17 00:00:00 2001 From: billingsley-john <56687624+billingsley-john@users.noreply.github.com> Date: Thu, 26 Mar 2020 12:59:12 +0000 Subject: [PATCH 2/4] Sorted returned element list and updated tests Returned element list is now sorted alphabetically. Tests updated to check list elements instead of list length. Co-Authored-By: Jonathan Shimwell --- openmc/material.py | 2 +- tests/unit_tests/test_material.py | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/openmc/material.py b/openmc/material.py index 66502a65e1..16448f0ea0 100644 --- a/openmc/material.py +++ b/openmc/material.py @@ -732,7 +732,7 @@ class Material(IDManagerMixin): """ - return list({re.split(r'(\d+)', i)[0] for i in self.get_nuclides()}) + return sorted({re.split(r'(\d+)', i)[0] for i in self.get_nuclides()}) def get_nuclides(self): """Returns all nuclides in the material diff --git a/tests/unit_tests/test_material.py b/tests/unit_tests/test_material.py index 546ee47885..9b5300fd2f 100644 --- a/tests/unit_tests/test_material.py +++ b/tests/unit_tests/test_material.py @@ -230,30 +230,26 @@ def test_get_elements(): # test addition of a single element m.add_element('Li', 0.2) - assert len(m.get_elements()) == 1 assert 'Li' in m.get_elements() # test that adding the same element m.add_element('Li', 0.3) - assert len(m.get_elements()) == 1 + assert m.get_elements() == ["Li"] assert 'Li' in m.get_elements() # test adding another element m.add_element('Si', 0.3) - assert len(m.get_elements()) == 2 - assert 'Si' in m.get_elements() + assert m.get_elements() == ["Li", "Si"] # test adding a third element m.add_element('O', 0.4) assert len(m.get_elements()) == 3 - + assert m.get_elements() == ["Li", "O", "Si"] # test removal of nuclides m.remove_nuclide('O16') m.remove_nuclide('O17') assert 'O' not in m.get_elements() - assert 'Si' in m.get_elements() - assert 'Li' in m.get_elements() - assert len(m.get_elements()) == 2 + assert m.get_elements() == ["Si", "Li"] def test_get_nuclide_densities(uo2): From a48f679b4e14a5297cc15e30e3862be425ee9270 Mon Sep 17 00:00:00 2001 From: billingsley-john <56687624+billingsley-john@users.noreply.github.com> Date: Thu, 26 Mar 2020 14:04:53 +0000 Subject: [PATCH 3/4] removed checks for length and specific entries Co-Authored-By: Andrew Johnson --- tests/unit_tests/test_material.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/unit_tests/test_material.py b/tests/unit_tests/test_material.py index 9b5300fd2f..9b06fae972 100644 --- a/tests/unit_tests/test_material.py +++ b/tests/unit_tests/test_material.py @@ -235,7 +235,6 @@ def test_get_elements(): # test that adding the same element m.add_element('Li', 0.3) assert m.get_elements() == ["Li"] - assert 'Li' in m.get_elements() # test adding another element m.add_element('Si', 0.3) @@ -243,12 +242,10 @@ def test_get_elements(): # test adding a third element m.add_element('O', 0.4) - assert len(m.get_elements()) == 3 assert m.get_elements() == ["Li", "O", "Si"] # test removal of nuclides m.remove_nuclide('O16') m.remove_nuclide('O17') - assert 'O' not in m.get_elements() assert m.get_elements() == ["Si", "Li"] From 08849c3fada7b55d9f5257ebecf35f74b1d20c8b Mon Sep 17 00:00:00 2001 From: billingsley-john <56687624+billingsley-john@users.noreply.github.com> Date: Thu, 26 Mar 2020 14:33:44 +0000 Subject: [PATCH 4/4] removed further check for specific entry Co-Authored-By: Andrew Johnson --- tests/unit_tests/test_material.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/test_material.py b/tests/unit_tests/test_material.py index 9b06fae972..e6d8102799 100644 --- a/tests/unit_tests/test_material.py +++ b/tests/unit_tests/test_material.py @@ -230,7 +230,7 @@ def test_get_elements(): # test addition of a single element m.add_element('Li', 0.2) - assert 'Li' in m.get_elements() + assert m.get_elements() == ["Li"] # test that adding the same element m.add_element('Li', 0.3) @@ -246,7 +246,7 @@ def test_get_elements(): # test removal of nuclides m.remove_nuclide('O16') m.remove_nuclide('O17') - assert m.get_elements() == ["Si", "Li"] + assert m.get_elements() == ["Li", "Si"] def test_get_nuclide_densities(uo2):