Пример #1
0
 def test_NaturalNuclideBase_getNatrualIsotpics(self):
     for nuc in nuclideBases.where(
         lambda nn: isinstance(nn, nuclideBases.NaturalNuclideBase)
     ):
         numNaturals = len(list(nuc.getNaturalIsotopics()))
         self.assertGreaterEqual(
             len(nuc.element.nuclideBases) - 1, numNaturals
         )  # , nuc)
Пример #2
0
 def test_nucBases_labelAndNameCollsionsAreForSameNuclide(self):
     count = 0
     for nuc in nuclideBases.where(lambda nn: nn.name == nn.label):
         count += 1
         self.assertEqual(nuc, nuclideBases.byName[nuc.name])
         self.assertEqual(nuc, nuclideBases.byDBName[nuc.getDatabaseName()])
         self.assertEqual(nuc, nuclideBases.byLabel[nuc.label])
     self.assertGreater(count, 10)
Пример #3
0
 def test_NaturalNuclide_atomicWeightIsAverageOfNaturallyOccuringIsotopes(
         self):
     for natNuk in nuclideBases.where(
             lambda nn: isinstance(nn, nuclideBases.NaturalNuclideBase)):
         atomicMass = 0.0
         for natIso in natNuk.getNaturalIsotopics():
             atomicMass += natIso.abundance * natIso.weight
         self.assertEqual(
             atomicMass,
             natNuk.weight,
             "{} weight is {}, expected {}".format(natNuk, natNuk.weight,
                                                   atomicMass),
         )
Пример #4
0
def _buildMo99LumpedFissionProduct():
    """
    Build a dummy MO-99 LFP collection.

    This is a very bad FP approximation from a physics standpoint but can be very useful
    for rapid-running test cases.
    """
    mo99 = nuclideBases.byName["MO99"]
    mo99LFPs = LumpedFissionProductCollection()
    for lfp in nuclideBases.where(
            lambda nb: isinstance(nb, nuclideBases.LumpNuclideBase)):
        # Not all lump nuclide bases defined are fission products, so ensure that only fission products are considered.
        if not "FP" in lfp.name:
            continue
        mo99FP = LumpedFissionProduct(lfp.name)
        mo99FP[mo99] = 2.0
        mo99LFPs[lfp.name] = mo99FP
    return mo99LFPs
Пример #5
0
 def test_nucBases_Mc2Elementals(self):
     notElemental = [
         "LFP00",  # this is an on-the-fly fission product
         "LFP35",
         "LFP38",
         "LFP39",
         "LFP40",
         "LFP41",
         "DUMMY",
         "DUMP1",
         "DUMP2",
         "LREGN",
     ]
     for lump in nuclideBases.where(
             lambda nn: isinstance(nn, nuclideBases.LumpNuclideBase)):
         if lump.name in notElemental:
             self.assertIsInstance(lump, nuclideBases.LumpNuclideBase)
         else:
             self.assertIsInstance(lump, nuclideBases.NaturalNuclideBase)
Пример #6
0
 def test_nucBases_imposeBurnChainDecayBulkStatistics(self):
     """
     Test must be updated manually when burn chain is modified.
     """
     decayers = list(nuclideBases.where(lambda nn: len(nn.decays) > 0))
     self.assertTrue(decayers)
     for nuc in decayers:
         if nuc.name in [
                 "U238",
                 "PU240",
                 "PU242",
                 "CM242",
                 "CM244",
                 "CM246",
                 "CF250",
                 "CF252",
         ]:
             continue
         self.assertAlmostEqual(1.0, sum(dd.branch for dd in nuc.decays))
Пример #7
0
    def test_nucBases_imposeBurnChainTransmutationBulkStatistics(self):
        """
        Make sure all branches are equal to 1 for every transmutation type.

        Exception: We allow 3e-4 threshold to account for ternary fissions,
        which are usually < 2e-4 per fission.
        """
        trasmuters = nuclideBases.where(lambda nn: len(nn.trans) > 0)
        self.assertTrue(trasmuters)
        for nuc in trasmuters:
            expected = len(set(tt.type for tt in nuc.trans))
            self.assertTrue(all(0.0 <= tt.branch <= 1.0 for tt in nuc.trans))
            actual = sum(tt.branch for tt in nuc.trans)
            self.assertAlmostEqual(
                expected,
                actual,
                msg="{0} has {1} transmutation but the branches add up to {2}"
                "".format(nuc, expected, actual),
                delta=3e-4,
            )  # ternary fission
Пример #8
0
 def test_nucBases_isHeavyMetal(self):
     for nb in nuclideBases.where(lambda nn: nn.z <= 89):
         self.assertFalse(nb.isHeavyMetal())
     for nb in nuclideBases.where(lambda nn: nn.z > 89):
         self.assertTrue(nb.isHeavyMetal())
Пример #9
0
 def test_LumpNuclideBase_getNatrualIsotopicsDoesNotFail(self):
     for nuc in nuclideBases.where(lambda nn: isinstance(
             nn, nuclideBases.LumpNuclideBase) and nn.z == 0):
         self.assertEqual(0, len(list(nuc.getNaturalIsotopics())), nuc)