mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-21 14:35:27 -04:00
147 lines
4.5 KiB
Python
147 lines
4.5 KiB
Python
""" Tests for the AtomNumber class """
|
|
|
|
import numpy as np
|
|
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
|