Skip to content

Commit

Permalink
Addressing PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
bdlafleur committed Nov 22, 2023
1 parent 2215bcf commit 1545e3e
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 11 deletions.
4 changes: 2 additions & 2 deletions armi/cases/suiteBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ def __init__(self, settingName, value):
self.value = value
def __call__(self, cs, bp, geom):
cs = cs.modified(newSettings={settignName: value})
cs = cs.modified(newSettings={self.settingName: self.value})
return cs, bp, geom
builder = FullFactorialSuiteBuilder(someCase)
Expand Down Expand Up @@ -290,7 +290,7 @@ def __init__(self, settingName, value):
self.value = value
def __call__(self, cs, bp, geom):
cs = cs.modified(newSettings={settignName: value})
cs = cs.modified(newSettings={self.settignName: self.value})
return cs, bp, geom
builder = SeparateEffectsSuiteBuilder(someCase)
Expand Down
7 changes: 7 additions & 0 deletions armi/cases/tests/test_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,13 @@ def test_dependencyFromExplictRepeatShuffles(self):
self.assertIn(self.c1, self.c2.dependencies)

def test_explicitDependency(self):
"""
Test dependencies for case suites.
.. test:: Dependence allows for one case to start after the completion of another.
:id: T_ARMI_CASE_SUITE
:tests: R_ARMI_CASE_SUITE
"""
self.c1.addExplicitDependency(self.c2)

self.assertIn(self.c2, self.c1.dependencies)
Expand Down
96 changes: 94 additions & 2 deletions armi/cases/tests/test_suiteBuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,15 @@
import unittest

from armi import cases, settings
from armi.cases.inputModifiers.inputModifiers import SamplingInputModifier
from armi.cases.suiteBuilder import LatinHyperCubeSuiteBuilder
from armi.cases.inputModifiers.inputModifiers import (
SamplingInputModifier,
InputModifier,
)
from armi.cases.suiteBuilder import (
LatinHyperCubeSuiteBuilder,
FullFactorialSuiteBuilder,
SeparateEffectsSuiteBuilder,
)

cs = settings.Settings(
os.path.join(
Expand All @@ -45,6 +52,16 @@ def __call__(self, cs, bp, geom):
return cs, bp, geom


class SettingModifier(InputModifier):
def __init__(self, settingName, value):
self.settingName = settingName
self.value = value

def __call__(self, cs, bp, geom):
cs = cs.modified(newSettings={self.settingName: self.value})
return cs, bp, geom


class TestLatinHyperCubeSuiteBuilder(unittest.TestCase):
"""Class to test LatinHyperCubeSuiteBuilder."""

Expand Down Expand Up @@ -79,3 +96,78 @@ def test_addDegreeOfFreedom(self):

with self.assertRaises(ValueError):
builder.addDegreeOfFreedom([powerMod, morePowerMod])


class TestFullFactorialSuiteBuilder(unittest.TestCase):
"""Class to test FullFactorialSuiteBuilder."""

def test_buildSuite(self):
"""Initialize a full factorial suite of cases.
.. test:: A generic mechanism to allow users to modify user inputs in cases.
:id: T_ARMI_CASE_MOD1
:tests: R_ARMI_CASE_MOD
"""
builder = FullFactorialSuiteBuilder(case)
builder.addDegreeOfFreedom(
SettingModifier("settingName1", value) for value in (1, 2)
)
builder.addDegreeOfFreedom(
SettingModifier("settingName2", value) for value in (3, 4, 5)
)

assert builder.modifierSets[0][0].value == 1
assert builder.modifierSets[0][1].value == 3

assert builder.modifierSets[1][0].value == 2
assert builder.modifierSets[1][1].value == 3

assert builder.modifierSets[2][0].value == 1
assert builder.modifierSets[2][1].value == 4

assert builder.modifierSets[3][0].value == 2
assert builder.modifierSets[3][1].value == 4

assert builder.modifierSets[4][0].value == 1
assert builder.modifierSets[4][1].value == 5

assert builder.modifierSets[5][0].value == 2
assert builder.modifierSets[5][1].value == 5

assert len(builder.modifierSets) == 6


class TestSeparateEffectsBuilder(unittest.TestCase):
"""Class to test separate effects builder."""

def test_buildSuite(self):
"""Initialize a full factorial suite of cases.
.. test:: A generic mechanism to allow users to modify user inputs in cases.
:id: T_ARMI_CASE_MOD2
:tests: R_ARMI_CASE_MOD
"""
builder = SeparateEffectsSuiteBuilder(case)
builder.addDegreeOfFreedom(
SettingModifier("settingName1", value) for value in (1, 2)
)
builder.addDegreeOfFreedom(
SettingModifier("settingName2", value) for value in (3, 4, 5)
)

assert builder.modifierSets[0][0].value == 1
assert builder.modifierSets[0][0].settingName == "settingName1"

assert builder.modifierSets[1][0].value == 2
assert builder.modifierSets[1][0].settingName == "settingName1"

assert builder.modifierSets[2][0].value == 3
assert builder.modifierSets[2][0].settingName == "settingName2"

assert builder.modifierSets[3][0].value == 4
assert builder.modifierSets[3][0].settingName == "settingName2"

assert builder.modifierSets[4][0].value == 5
assert builder.modifierSets[4][0].settingName == "settingName2"

assert len(builder.modifierSets) == 5
12 changes: 6 additions & 6 deletions armi/materials/tests/test_materials.py
Original file line number Diff line number Diff line change
Expand Up @@ -939,12 +939,6 @@ class Lead_TestCase(_Material_Test, unittest.TestCase):
MAT_CLASS = materials.Lead

def test_volumetricExpansion(self):
"""Unit tests for lead materials.
.. test:: There is a base class for fluid materials.
:id: T_ARMI_MAT_FLUID2
:tests: R_ARMI_MAT_FLUID
"""
self.assertAlmostEqual(
self.mat.volumetricExpansion(800),
1.1472e-4,
Expand All @@ -963,6 +957,12 @@ def test_volumetricExpansion(self):
)

def test_linearExpansion(self):
"""Unit tests for lead materials linear expansion.
.. test:: There is a base class for fluid materials.
:id: T_ARMI_MAT_FLUID2
:tests: R_ARMI_MAT_FLUID
"""
cur = self.mat.linearExpansion(400)
ref = 0.0
self.assertEqual(cur, ref)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ class TestGlobalFluxOptions(unittest.TestCase):
"""Tests for GlobalFluxOptions."""

def test_readFromSettings(self):
"""Test reading global flux options
"""Test reading global flux options.
.. test:: Tests GlobalFluxOptions.
:id: T_ARMI_FLUX_OPTIONS
Expand Down

0 comments on commit 1545e3e

Please sign in to comment.