コード例 #1
0
    def test_enforceBondRemovalFraction(self):
        """
        Tests that the bond sodium is removed from the `bond` component in a block
        and the mass is then evenly distributed across all other sodium containing components
        (e.g., coolant, intercoolant).
        """
        b = test_blocks.loadTestBlock()
        bond = b.getComponent(Flags.BOND)
        bondRemovalFrac = 0.705
        ndensBefore = b.getNumberDensity("NA")
        bondNdensBefore = bond.getNumberDensity("NA")
        b.p.bondBOL = bondNdensBefore
        utils.enforceBondRemovalFraction(b, bondRemovalFrac)
        bondNdensAfter = bond.getNumberDensity("NA")
        ndensAfter = b.getNumberDensity("NA")

        self.assertAlmostEqual(
            bondNdensAfter / bondNdensBefore, (1.0 - bondRemovalFrac)
        )
        self.assertAlmostEqual(ndensBefore, ndensAfter)

        # make sure it doesn't change if you run it twice
        utils.enforceBondRemovalFraction(b, bondRemovalFrac)
        bondNdensAfter = bond.getNumberDensity("NA")
        ndensAfter = b.getNumberDensity("NA")
        self.assertAlmostEqual(
            bondNdensAfter / bondNdensBefore, (1.0 - bondRemovalFrac)
        )
        self.assertAlmostEqual(ndensBefore, ndensAfter)
コード例 #2
0
 def testMakeTable(self):
     obj = loadTestBlock()
     obj.p.mgFlux = range(33)
     core = obj.getAncestorWithFlags(Flags.CORE)
     core.lib = isotxs.readBinary(ISOAA_PATH)
     table = cst.makeReactionRateTable(obj)
     self.assertEqual(len(table), len(obj.getNuclides()))
コード例 #3
0
 def setUp(self):
     block = loadTestBlock()
     fuel = block.getChildrenWithFlags(Flags.FUEL)[0]
     fuel.setTemperature(600)
     options = dragonExecutor.DragonOptions("test")
     options.fromBlock(block)
     options.nuclides = ["U235", "U238"]
     self.mix = dragonWriter.DragonMixture(block, options, 0)
コード例 #4
0
    def test_applyFuelDisplacement(self):
        displacement = 0.01
        block = test_blocks.loadTestBlock()
        fuel = block.getComponent(Flags.FUEL)
        originalHotODInCm = fuel.getDimension("od")
        utils.applyFuelDisplacement(block, displacement)
        finalHotODInCm = fuel.getDimension("od")

        self.assertAlmostEqual(finalHotODInCm, originalHotODInCm + 2 * displacement)
コード例 #5
0
 def setUp(self):
     block = loadTestBlock()
     self.cs = caseSettings.Settings()
     self.cs[CONF_CROSS_SECTION].setDefaults(self.cs)
     self.cs["dragonDataPath"] = os.path.join("path", "to", "draglibendfb7r1SHEM361")
     options = dragonExecutor.DragonOptions("test")
     options.fromBlock(block)
     options.fromUserSettings(self.cs)
     self.writer = dragonWriter.DragonWriterHomogenized([block], options)
コード例 #6
0
    def test_calcReactionRates(self):
        """
        Test that the reaction rate code executes and sets a param > 0.0.

        .. warning: This does not validate the reaction rate calculation.
        """
        b = test_blocks.loadTestBlock()
        test_blocks.applyDummyData(b)
        self.assertAlmostEqual(b.p.rateAbs, 0.0)
        globalFluxInterface.calcReactionRates(b, 1.01, b.r.core.lib)
        self.assertGreater(b.p.rateAbs, 0.0)
コード例 #7
0
    def test_setMass(self):
        masses = {"U235": 5.0, "U238": 3.0}
        self.obj.setMasses(masses)
        self.assertAlmostEqual(self.obj.getMass("U235"), 5.0)
        self.assertAlmostEqual(self.obj.getMass("U238"), 3.0)
        self.assertAlmostEqual(self.obj.getMass(), 8.0)

        self.obj.addMasses(masses)
        self.assertAlmostEqual(self.obj.getMass("U238"), 6.0)

        # make sure it works with groups of groups
        group = composites.Composite("group")
        group.add(self.obj)
        group.add(loadTestBlock())
        group.setMass("U235", 5)
        self.assertAlmostEqual(group.getMass("U235"), 5)
コード例 #8
0
 def setUp(self):
     self.Block = loadTestBlock()
     self.r = self.Block.r
     self.Block.setHeight(100.0)
     self.refDict = {
         "U235": 0.00275173784234,
         "U238": 0.0217358415457,
         "W182": 1.09115150103e-05,
         "W183": 5.89214392093e-06,
         "W184": 1.26159558164e-05,
         "W186": 1.17057432664e-05,
         "V": 2e-2,
         "NA23": 2e-2,
         "ZR": 0.00709003962772,
     }
     self.Block.setNumberDensities(self.refDict)
コード例 #9
0
    def test_makeTable(self):
        obj = loadTestBlock()
        obj.p.mgFlux = range(33)
        core = obj.getAncestorWithFlags(Flags.CORE)
        core.lib = isotxs.readBinary(ISOAA_PATH)
        table = crossSectionTable.makeReactionRateTable(obj)

        self.assertEqual(len(obj.getNuclides()), len(table))
        self.assertEqual(obj.getName(), "B0001-000")

        self.assertEqual(table.getName(), "B0001-000")
        self.assertTrue(table.hasValues())

        xSecTable = table.getXsecTable()
        self.assertEqual(len(xSecTable), 11)
        self.assertIn("xsecs", xSecTable[0])
        self.assertIn("mcnpId", xSecTable[-1])
コード例 #10
0
 def test_build_NthRing(self):
     """Test building of one ring."""
     RING = 6
     block = loadTestBlock(cold=False)
     numPinsInRing = 30
     converter = blockConverters.HexComponentsToCylConverter(block)
     fuel, clad = _buildJoyoFuel()
     pinComponents = [fuel, clad]
     converter._buildFirstRing(pinComponents)
     converter.pinPitch = 0.76
     converter._buildNthRing(pinComponents, RING)
     components = converter.convertedBlock
     self.assertEqual(components[3].name.split()[0], components[-1].name.split()[0])
     self.assertAlmostEqual(
         clad.getNumberDensity("FE56"), components[1].getNumberDensity("FE56")
     )
     self.assertAlmostEqual(
         components[3].getArea() + components[-1].getArea(),
         clad.getArea() * numPinsInRing / clad.getDimension("mult"),
     )
コード例 #11
0
 def test_copyParamsFrom(self):
     obj2 = loadTestBlock()
     obj2.p.percentBu = 15.2
     self.obj.copyParamsFrom(obj2)
     self.assertEqual(obj2.p.percentBu, self.obj.p.percentBu)
コード例 #12
0
 def setUp(self):
     self.obj = loadTestBlock()
コード例 #13
0
 def test_dissolveLinerIntoClad(self):
     self._test_dissolve(loadTestBlock(), "outer liner", "clad")
     hotBlock = loadTestBlock(cold=False)
     self._test_dissolve(hotBlock, "outer liner", "clad")
     hotBlock = self._perturbTemps(hotBlock, "outer liner", 127, 800)
     self._test_dissolve(hotBlock, "outer liner", "clad")
コード例 #14
0
 def test_dissolveWireIntoCoolant(self):
     self._test_dissolve(loadTestBlock(), "wire", "coolant")
     hotBlock = loadTestBlock(cold=False)
     self._test_dissolve(hotBlock, "wire", "coolant")
     hotBlock = self._perturbTemps(hotBlock, "wire", 127, 800)
     self._test_dissolve(hotBlock, "wire", "coolant")
コード例 #15
0
 def setUp(self):
     self.block = loadTestBlock()