Source code for armi.cases.inputModifiers.tests.test_pinTypeInputModifiers

# Copyright 2019 TerraPower, LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Unit tests for input modifiers."""
import math
import unittest

from armi import settings
from armi.cases.inputModifiers import pinTypeInputModifiers
from armi.cases.inputModifiers.tests.test_inputModifiers import BLUEPRINT_INPUT
from armi.reactor import blueprints


[docs]class MockGeom: geomType = "hex"
[docs]class TestBlueprintModifiers(unittest.TestCase): def setUp(self): self.bp = blueprints.Blueprints.load(BLUEPRINT_INPUT) self.bp._prepConstruction(settings.Settings())
[docs] def test_AdjustSmearDensity(self): r""" Compute the smear density where clad.id is 1.0. .. math:: areaFuel = smearDensity * innerCladArea fuelOD^2 / 4 = 0.5 * cladID^2 / 4 fuelOD = \sqrt{0.5} Notes ----- The area of fuel is 0.5 * inner area of clad. """ bp = self.bp self.assertEqual(1.0, bp.blockDesigns["fuel 1"]["clad"].id) self.assertEqual(0.5, bp.blockDesigns["fuel 1"]["fuel"].od) self.assertEqual(0.5, bp.blockDesigns["fuel 2"]["fuel"].od) self.assertEqual(0.5, bp.blockDesigns["block 3"]["fuel"].od) self.assertEqual(0.5, bp.blockDesigns["block 4"]["fuel"].od) self.assertEqual(0.5, bp.blockDesigns["block 5"]["fuel"].od) pinTypeInputModifiers.SmearDensityModifier(0.5)( settings.Settings(), bp, MockGeom ) self.assertEqual(math.sqrt(0.5), bp.blockDesigns["fuel 1"]["fuel"].od) self.assertEqual(math.sqrt(0.5), bp.blockDesigns["fuel 2"]["fuel"].od) self.assertEqual(math.sqrt(0.5), bp.blockDesigns["block 3"]["fuel"].od) self.assertEqual(math.sqrt(0.5), bp.blockDesigns["block 4"]["fuel"].od) self.assertEqual(0.5, bp.blockDesigns["block 5"]["fuel"].od) # unique instance
[docs] def test_CladThickenessByODModifier(self): """ Adjust the clad thickness by outer diameter. .. math:: cladThickness = (clad.od - clad.id) / 2 clad.od = 2 * cladThicness - clad.id when ``clad.id = 1.0`` and ``cladThickness = 0.12``, .. math:: clad.od = 2 * 0.12 - 1.0 clad.od = 1.24 """ bp = self.bp self.assertEqual(1.1, bp.blockDesigns["fuel 1"]["clad"].od) self.assertEqual(1.1, bp.blockDesigns["fuel 2"]["clad"].od) self.assertEqual(1.1, bp.blockDesigns["block 3"]["clad"].od) self.assertEqual(1.1, bp.blockDesigns["block 4"]["clad"].od) self.assertEqual(1.1, bp.blockDesigns["block 5"]["clad"].od) pinTypeInputModifiers.CladThicknessByODModifier(0.12)( settings.Settings(), bp, MockGeom ) self.assertEqual(1.24, bp.blockDesigns["fuel 1"]["clad"].od) self.assertEqual(1.24, bp.blockDesigns["fuel 2"]["clad"].od) self.assertEqual(1.24, bp.blockDesigns["block 3"]["clad"].od) self.assertEqual(1.24, bp.blockDesigns["block 4"]["clad"].od) self.assertEqual( 1.24, bp.blockDesigns["block 5"]["clad"].od ) # modifies all blocks
[docs] def test_CladThickenessByIDModifier(self): """ Adjust the clad thickness by inner diameter. .. math:: cladThickness = (clad.od - clad.id) / 2 clad.id = cladod - 2 * cladThicness when ``clad.id = 1.1`` and ``cladThickness = 0.025``, .. math:: clad.od = 1.1 - 2 * 0.025 clad.od = 1.05 """ bp = self.bp self.assertEqual(1.0, bp.blockDesigns["fuel 1"]["clad"].id) self.assertEqual(1.0, bp.blockDesigns["fuel 2"]["clad"].id) self.assertEqual(1.0, bp.blockDesigns["block 3"]["clad"].id) self.assertEqual(1.0, bp.blockDesigns["block 4"]["clad"].id) self.assertEqual(1.0, bp.blockDesigns["block 5"]["clad"].id) pinTypeInputModifiers.CladThicknessByIDModifier(0.025)( settings.Settings(), bp, MockGeom ) self.assertEqual(1.05, bp.blockDesigns["fuel 1"]["clad"].id) self.assertEqual(1.05, bp.blockDesigns["fuel 2"]["clad"].id) self.assertEqual(1.05, bp.blockDesigns["block 3"]["clad"].id) self.assertEqual(1.05, bp.blockDesigns["block 4"]["clad"].id) self.assertEqual( 1.05, bp.blockDesigns["block 5"]["clad"].id ) # modifies all blocks