Skip to content

Commit

Permalink
Unit test for Component.changeNDensByFactor
Browse files Browse the repository at this point in the history
  • Loading branch information
drewj-tp committed Feb 28, 2025
1 parent fdb615b commit 91fa7d2
Showing 1 changed file with 35 additions and 1 deletion.
36 changes: 35 additions & 1 deletion armi/reactor/tests/test_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
"""Tests functionalities of components within ARMI."""
import copy
import math
import random
import unittest

import numpy as np
from numpy.testing import assert_equal
from numpy.testing import assert_allclose, assert_equal

from armi.materials import air, alloy200
from armi.materials.material import Material
Expand Down Expand Up @@ -245,6 +246,39 @@ def test_setNumberDensitiesWithExpansion(self):
self.assertEqual(component.getNumberDensity("C"), 1.0 * expansionFactor)
self.assertEqual(component.getNumberDensity("MN"), 0.58 * expansionFactor)

def test_changeNDensByFactor(self):
"""Test the ability to change just the component number densities."""
referenceDensity = self.component.getNumberDensities()
self.component.p.detailedNDens = None
self.component.p.pinNDens = None
scalingFactor = random.uniform(0, 10)
self.component.changeNDensByFactor(scalingFactor)
for nuc, refDens in referenceDensity.items():
actual = self.component.getNumberDensity(nuc)
self.assertEqual(actual, refDens * scalingFactor, msg=nuc)
self.assertIsNone(self.component.p.detailedNDens)
self.assertIsNone(self.component.p.pinNDens)

def test_changeNDensByFactorWithExtraParams(self):
""""Test scaling other parameters when component number density is scaled."""
referenceDensity = self.component.getNumberDensities()
refDetailedNDens = np.random.random(100)
# Use copy to avoid spoiling the reference data with in-place multiplication
self.component.p.detailedNDens = refDetailedNDens.copy()
# Array of number densities per pin
refPinDens = np.random.random(size=(50, 10))
self.component.p.pinNDens = refPinDens.copy()

scalingFactor = random.uniform(0, 10)
self.component.changeNDensByFactor(scalingFactor)

for nuc, refDens in referenceDensity.items():
actual = self.component.getNumberDensity(nuc)
self.assertEqual(actual, refDens * scalingFactor)

assert_allclose(self.component.p.detailedNDens, refDetailedNDens * scalingFactor)
assert_allclose(self.component.p.pinNDens, refPinDens * scalingFactor)


class TestComponent(TestGeneralComponents):
"""Test the base component."""
Expand Down

0 comments on commit 91fa7d2

Please sign in to comment.