def test_nucBases_singleFailsWithNoMatches(self): with self.assertRaises(Exception): nuclideBases.single(lambda nuc: nuc.z == 1000)
def test_nucBases_singleIsPrettySpecific(self): u235 = nuclideBases.single(lambda nuc: nuc.name == "U235") self.assertEqual(235, u235.a) self.assertEqual(92, u235.z)
def getAtomicWeight(lab=None, z=None, a=None): r""" returns atomic weight in g/mole Parameters ---------- lab : str, optional nuclide label, like U235 z : int, optional atomic number a : int, optional mass number Returns ------- aMass : float Atomic weight in grams /mole from NIST, or just mass number if not in library (U239 gives 239) Examples -------- >>> from armi.nucDirectory import nucDir >>> nucDir.getAtomicWeight('U235') 235.0439299 >>> nucDir.getAtomicWeight('U239') 239 >>> nucDir.getAtomicWeight('U238') 238.0507882 >>> nucDir.getAtomicWeight(z=94,a=239) 239.0521634 """ if lab: nuclide = None if lab in nuclideBases.byLabel: nuclide = nuclideBases.byLabel[lab] elif lab in nuclideBases.byMccId: nuclide = nuclideBases.byMccId[lab] if "DUMP1" in lab: return 10.0 # small dump. elif "DUMP2" in lab: return 240.0 # large dump. elif "FP35" in lab: return 233.2730 elif "FP38" in lab: return 235.78 elif "FP39" in lab: return 236.898 elif "FP40" in lab: return 237.7 elif "FP41" in lab: return 238.812 elif "MELT" in lab: # arbitrary melt refined. return 238 else: nuclide = getNuclideFromName(lab) return nuclide.weight elif z == 0 and a == 0: # dummy nuclide return 0.0 if a == 0 and z: # natural abundance sent. Figure it out. element = elements.byZ[z] return element.standardWeight else: nuclide = nuclideBases.single(lambda nn: nn.a == a and nn.z == z) return nuclide.weight