Ensure remove_nuclide removes all matching nuclides. Closes #1532

This commit is contained in:
Paul Romano 2020-03-25 09:37:00 -05:00
parent d15e404ac3
commit 86351747e7
2 changed files with 16 additions and 6 deletions

View file

@ -402,10 +402,9 @@ class Material(IDManagerMixin):
cv.check_type('nuclide', nuclide, str)
# If the Material contains the Nuclide, delete it
for nuc in self._nuclides:
for nuc in reversed(self.nuclides):
if nuclide == nuc.name:
self._nuclides.remove(nuc)
break
self.nuclides.remove(nuc)
def add_macroscopic(self, macroscopic):
"""Add a macroscopic to the material. This will also set the

View file

@ -11,8 +11,8 @@ def test_attributes(uo2):
assert uo2.depletable
def test_nuclides(uo2):
"""Test adding/removing nuclides."""
def test_add_nuclide():
"""Test adding nuclides."""
m = openmc.Material()
m.add_nuclide('U235', 1.0)
with pytest.raises(TypeError):
@ -21,7 +21,18 @@ def test_nuclides(uo2):
m.add_nuclide(1.0, 'H1')
with pytest.raises(ValueError):
m.add_nuclide('H1', 1.0, 'oa')
m.remove_nuclide('U235')
def test_remove_nuclide():
"""Test removing nuclides."""
m = openmc.Material()
for nuc, percent in [('H1', 1.0), ('H2', 1.0), ('H1', 2.0), ('H2', 2.0)]:
m.add_nuclide(nuc, percent)
m.remove_nuclide('H1')
assert len(m.nuclides) == 2
assert all(nuc.name == 'H2' for nuc in m.nuclides)
assert m.nuclides[0].percent == 1.0
assert m.nuclides[1].percent == 2.0
def test_elements():