Пример #1
0
 def test_nucBases_singleFailsWithNoMatches(self):
     with self.assertRaises(Exception):
         nuclideBases.single(lambda nuc: nuc.z == 1000)
Пример #2
0
 def test_nucBases_singleIsPrettySpecific(self):
     u235 = nuclideBases.single(lambda nuc: nuc.name == "U235")
     self.assertEqual(235, u235.a)
     self.assertEqual(92, u235.z)
Пример #3
0
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