OpenMC/tests/unit_tests/test_deplete_atom_number.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

148 lines
4.5 KiB
Python
Raw Permalink Normal View History

""" Tests for the AtomNumber class """
import numpy as np
2018-02-09 14:01:59 -06:00
from openmc.deplete import atom_number
def test_indexing():
"""Tests the __getitem__ and __setitem__ routines simultaneously."""
local_mats = ["10000", "10001"]
nuclides = ["U238", "U235", "U234"]
volume = {"10000" : 0.38, "10001" : 0.21}
number = atom_number.AtomNumber(local_mats, nuclides, volume, 2)
number["10000", "U238"] = 1.0
number["10001", "U238"] = 2.0
number["10000", "U235"] = 3.0
number["10001", "U235"] = 4.0
# String indexing
assert number["10000", "U238"] == 1.0
assert number["10001", "U238"] == 2.0
assert number["10000", "U235"] == 3.0
assert number["10001", "U235"] == 4.0
# Int indexing
assert number[0, 0] == 1.0
assert number[1, 0] == 2.0
assert number[0, 1] == 3.0
assert number[1, 1] == 4.0
number[0, 0] = 5.0
assert number[0, 0] == 5.0
assert number["10000", "U238"] == 5.0
def test_properties():
"""Test properties. """
local_mats = ["10000", "10001"]
nuclides = ["U238", "U235", "Gd157"]
volume = {"10000" : 0.38, "10001" : 0.21}
number = atom_number.AtomNumber(local_mats, nuclides, volume, 2)
assert list(number.materials) == ["10000", "10001"]
assert number.n_nuc == 3
assert list(number.nuclides) == ["U238", "U235", "Gd157"]
assert number.burnable_nuclides == ["U238", "U235"]
def test_density_indexing():
"""Tests the get and set_atom_density routines simultaneously."""
local_mats = ["10000", "10001", "10002"]
nuclides = ["U238", "U235", "U234"]
volume = {"10000" : 0.38, "10001" : 0.21}
number = atom_number.AtomNumber(local_mats, nuclides, volume, 2)
number.set_atom_density("10000", "U238", 1.0)
number.set_atom_density("10001", "U238", 2.0)
number.set_atom_density("10002", "U238", 3.0)
number.set_atom_density("10000", "U235", 4.0)
number.set_atom_density("10001", "U235", 5.0)
number.set_atom_density("10002", "U235", 6.0)
number.set_atom_density("10000", "U234", 7.0)
number.set_atom_density("10001", "U234", 8.0)
number.set_atom_density("10002", "U234", 9.0)
# String indexing
assert number.get_atom_density("10000", "U238") == 1.0
assert number.get_atom_density("10001", "U238") == 2.0
assert number.get_atom_density("10002", "U238") == 3.0
assert number.get_atom_density("10000", "U235") == 4.0
assert number.get_atom_density("10001", "U235") == 5.0
assert number.get_atom_density("10002", "U235") == 6.0
assert number.get_atom_density("10000", "U234") == 7.0
assert number.get_atom_density("10001", "U234") == 8.0
assert number.get_atom_density("10002", "U234") == 9.0
# Int indexing
assert number.get_atom_density(0, 0) == 1.0
assert number.get_atom_density(1, 0) == 2.0
assert number.get_atom_density(2, 0) == 3.0
assert number.get_atom_density(0, 1) == 4.0
assert number.get_atom_density(1, 1) == 5.0
assert number.get_atom_density(2, 1) == 6.0
assert number.get_atom_density(0, 2) == 7.0
assert number.get_atom_density(1, 2) == 8.0
assert number.get_atom_density(2, 2) == 9.0
number.set_atom_density(0, 0, 5.0)
assert number.get_atom_density(0, 0) == 5.0
# Verify volume is used correctly
assert number[0, 0] == 5.0 * 0.38
assert number[1, 0] == 2.0 * 0.21
assert number[2, 0] == 3.0 * 1.0
assert number[0, 1] == 4.0 * 0.38
assert number[1, 1] == 5.0 * 0.21
assert number[2, 1] == 6.0 * 1.0
assert number[0, 2] == 7.0 * 0.38
assert number[1, 2] == 8.0 * 0.21
assert number[2, 2] == 9.0 * 1.0
def test_get_mat_slice():
"""Tests getting slices."""
local_mats = ["10000", "10001", "10002"]
nuclides = ["U238", "U235", "U234"]
volume = {"10000" : 0.38, "10001" : 0.21}
number = atom_number.AtomNumber(local_mats, nuclides, volume, 2)
number.number = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]])
sl = number.get_mat_slice(0)
np.testing.assert_array_equal(sl, np.array([1.0, 2.0]))
sl = number.get_mat_slice("10000")
np.testing.assert_array_equal(sl, np.array([1.0, 2.0]))
def test_set_mat_slice():
"""Tests getting slices."""
local_mats = ["10000", "10001", "10002"]
nuclides = ["U238", "U235", "U234"]
volume = {"10000" : 0.38, "10001" : 0.21}
number = atom_number.AtomNumber(local_mats, nuclides, volume, 2)
number.set_mat_slice(0, [1.0, 2.0])
assert number[0, 0] == 1.0
assert number[0, 1] == 2.0
number.set_mat_slice("10000", [3.0, 4.0])
assert number[0, 0] == 3.0
assert number[0, 1] == 4.0