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)
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()))
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)
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)
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)
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)
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)
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)
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])
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"), )
def test_copyParamsFrom(self): obj2 = loadTestBlock() obj2.p.percentBu = 15.2 self.obj.copyParamsFrom(obj2) self.assertEqual(obj2.p.percentBu, self.obj.p.percentBu)
def setUp(self): self.obj = loadTestBlock()
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")
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")
def setUp(self): self.block = loadTestBlock()