Пример #1
0
def test_material_UO2():
    """
    Test material is from the Compendium of Material Composition Data for Radiation Transport Modeling: Revision 1.
    """
    m = materialReader.Material()
    m.setMaterial('UO2')
    assert m.name == 'Uranium Dioxide'
    assert m.elements == ['U', 'O']
    assert m.zaids == [92000, 8000]
    assert m.weightFraction == [0.881467, 0.118533]
    assert m.enrichmentZaids == [92000, 8000]
    assert m.enrichmentIsotopes == [[92234, 92235, 92236, 92238],
                                    [8016, 8017, 8018]]
    assert m.enrichmentVector == [[
        0.00026660018529341, 0.029999988655276, 0.0001384056351514,
        0.96959500496104
    ], [1.0, 0.0, 0.0]]
    assert m.density == 10.96
    assert np.allclose(m.atomDensity, 0.07335, 6)
    atomPercentKnown = {
        92234: 0.000090,
        92235: 0.010124,
        92236: 0.000046,
        92238: 0.323072,
        8016: 0.666667
    }
    for k, v in atomPercentKnown.items():
        assert np.allclose(m.atomPercent[k], v, 6)
Пример #2
0
 def getMaterialCard(self, materialName):
     """Creates the material for the given constituent and creates the material card."""
     self.material = materialReader.Material()
     self.material.setMaterial(materialName)
     if self.voidPercent != 1.0:
         self.material.voidMaterial(self.voidPercent)
     self.materialCard = mcnpCF.getMaterialCard(self.material, self.materialXCLibrary, self.materialNum)
Пример #3
0
def test_constituent_getMaterialCard():
    c = Constituent.Constituent(constituentInfo)
    sodium = mr.Material()
    sodium.setMaterial('LiquidNa')
    knownMaterialCard = '\nc Material: Liquid Sodium; Density: 0.02428 atoms/bn*cm \nm3 11023.82c 1.0000E+0'
    c.getMaterialCard(constituentInfo[0][3])
    assert sodium.name == c.material.name
    assert knownMaterialCard == c.materialCard
Пример #4
0
def test_material_5Pu22U10Zr():
    m = materialReader.Material()
    m.setMaterial('5Pu22U10Zr')
    assert m.name == '5Pu22U10Zr'
    assert m.elements == ['U', 'Pu', 'Zr']
    assert m.zaids == [92000, 94000, 40000]
    assert m.weightFraction == [0.85, 0.05, 0.1]
    assert m.enrichmentZaids == [92000, 94000]
    assert m.enrichmentIsotopes == [[92234, 92235, 92236, 92238],
                                    [94239, 94240]]
    assert m.enrichmentVector == [[0.0, 0.2588, 0.0, 0.7412], [0.94, 0.060]]
Пример #5
0
def test_material_SS316():
    """
    Test material is from the Compendium of Material Composition Data for Radiation Transport Modeling: Revision 1.
    """
    m = materialReader.Material()
    m.setMaterial('SS316')
    assert m.name == 'Stainless Steel 316'
    assert m.elements == ['C', 'Si', 'P', 'S', 'Cr', 'Mn', 'Fe', 'Ni', 'Mo']
    assert m.zaids == [
        6000, 14000, 15000, 16000, 24000, 25000, 26000, 28000, 42000
    ]
    assert m.weightFraction == [
        0.00041, 0.00507, 0.00023, 0.00015, 0.17, 0.01014, 0.669, 0.12, 0.025
    ]
    assert m.enrichmentZaids == []
    assert m.enrichmentIsotopes == []
    assert m.enrichmentVector == []
    assert m.density == 8.0
    assert np.allclose(m.atomDensity, 8.655e-2, 5)
    atomPercentKnown = {
        6000: 1.900e-3,
        14028: 9.231e-3,
        14029: 4.857e-4,
        14030: 3.316e-4,
        15031: 4.133e-4,
        16032: 2.466e-4,
        16033: 2.008e-6,
        16034: 1.172e-5,
        16036: 2.921e-8,
        24050: 7.596e-3,
        24052: 1.523e-1,
        24053: 1.760e-2,
        24054: 4.465e-3,
        25055: 1.027e-2,
        26054: 3.765e-2,
        26056: 6.128e-1,
        26057: 1.441e-2,
        26058: 1.951e-3,
        28058: 7.647e-2,
        28060: 3.047e-2,
        28061: 1.347e-3,
        28062: 4.365e-3,
        28064: 1.147e-3,
        42092: 2.018e-3,
        42094: 1.298e-3,
        42095: 2.272e-3,
        42096: 2.416e-3,
        42097: 1.406e-3,
        42098: 3.609e-3,
        42100: 1.483e-3
    }
    for k, v in atomPercentKnown.items():
        assert np.allclose(m.atomPercent[k], v, 5)
Пример #6
0
def getSmearedMaterial(materials, voidMaterial = '', voidPercent = 1.0):
    """Create the material data card for a smeared material."""
    smearMaterial = {}
    avogadros = materialReader.AVOGADROS_NUMBER
    voidMultiplier = 1.0
    for material, materialWeightPercent in materials.items():
        if material == 'Void':
            pass
        else:
            materialClass = materialReader.Material()
            materialClass.setMaterial(material)

            if materialClass.materialName == voidMaterial:
                voidMultiplier = voidPercent
            else:
                voidMultiplier = 1.0

            for isotope, isotopeWeightPercent in materialClass.weightPercent.items():
                element = str(isotope)
                if len(element) < 5:
                    currentElement = element[:1] + '000'
                else:
                    currentElement = element[:2] + '000'
                currentElement = int(currentElement)
                try:
                    smearMaterial[isotope] += isotopeWeightPercent * materialWeightPercent * materialClass.density \
                                              * avogadros * voidMultiplier / \
                                              materialClass.elementDict[currentElement].molecularMassDict[isotope]
                except KeyError:
                    smearMaterial[isotope] = isotopeWeightPercent * materialWeightPercent * materialClass.density \
                                             * avogadros * voidMultiplier / \
                                             materialClass.elementDict[currentElement].molecularMassDict[isotope]
    newMaterial = materialReader.Material()
    newMaterial.name = "{}".format([val for val in materials])
    newMaterial.atomDensity = sum(smearMaterial.values())
    smearMaterialAtomPercent = {}
    for k, v in smearMaterial.items():
        smearMaterialAtomPercent[k] = v / newMaterial.atomDensity
    newMaterial.atomPercent = smearMaterialAtomPercent
    return newMaterial
Пример #7
0
def test_material_liqduiNa():
    m = materialReader.Material()
    m.setMaterial('LiquidNa')
    assert m.name == 'Liquid Sodium'
    assert m.elements == ['Na']
    assert m.zaids == [11000]
    assert m.weightFraction == [1.0]
    assert m.enrichmentZaids == []
    assert m.enrichmentIsotopes == []
    assert m.enrichmentVector == []
    assert m.density == 0.927
    assert np.allclose(m.atomDensity, 0.0242826)
    assert m.atomPercent == {11023: 1.0}
Пример #8
0
def test_material_liqduiPb():
    m = materialReader.Material()
    m.setMaterial('LiquidPb')
    assert m.name == 'Liquid Lead'
    assert m.elements == ['Pb']
    assert m.zaids == [82000]
    assert m.weightFraction == [1.0]
    assert m.enrichmentZaids == []
    assert m.enrichmentIsotopes == []
    assert m.enrichmentVector == []
    assert m.density == 10.678
    knownAtomPercent = {82204: 0.014, 82206: 0.241, 82207: 0.221, 82208: 0.524}
    for k, v in knownAtomPercent.items():
        assert np.allclose(m.atomPercent[k], v, 5)
    assert np.allclose(m.atomDensity, 0.032956, 5)
Пример #9
0
def test_material():
    m = materialReader.Material()
    assert m.enrichmentDict == {}
    assert m.isotopeDict == {}
    assert m.weightPercent == {}
    assert m.atomPercent == {}
    assert m.atomDensity == 0.0
    assert m.elementDict == {}
    assert m.name == ''
    assert m.elements == []
    assert m.zaids == []
    assert m.weightFraction == []
    assert m.density == 0.0
    assert m.linearCoeffExpansion == 0.0
    assert m.enrichmentZaids == []
    assert m.enrichmentIsotopes == []
    assert m.enrichmentVector == []
Пример #10
0
def test_material_liqduiPbBi():
    m = materialReader.Material()
    m.setMaterial('LiquidPbBi')
    assert m.name == 'Liquid Lead Bismuth (Eutectic)'
    assert m.elements == ['Pb', 'Bi']
    assert m.zaids == [82000, 83000]
    assert m.weightFraction == [0.445, 0.555]
    assert m.enrichmentZaids == []
    assert m.enrichmentIsotopes == []
    assert m.enrichmentVector == []
    assert m.density == 11.096
    knownAtomPercent = {
        82204: 0.006259,
        82206: 0.107749,
        82207: 0.098808,
        82208: 0.234277,
        83209: 0.552907
    }
    for k, v in knownAtomPercent.items():
        assert np.allclose(m.atomPercent[k], v, 5)
    assert np.allclose(m.atomDensity, 0.032096, 5)
Пример #11
0
def test_material_NoMaterial():
    m = materialReader.Material()
    try:
        m.setMaterial('NoMaterial')
    except AssertionError:
        m.density = 0.0
Пример #12
0
def test_material_BadWtPer():
    m = materialReader.Material()
    m.setMaterial('BadMaterial')
    assert m.weightPercent != 1.0
Пример #13
0
def test_material_HT9():
    """
    Test material is from the Compendium of Material Composition Data for Radiation Transport Modeling: Revision 1.
    """
    m = materialReader.Material()
    m.setMaterial('HT9')
    assert m.name == 'HT9'
    assert m.elements == [
        'C', 'Si', 'P', 'S', 'V', 'Cr', 'Mn', 'Fe', 'Ni', 'Mo', 'W'
    ]
    assert m.zaids == [
        6000, 14000, 15000, 16000, 23000, 24000, 25000, 26000, 28000, 42000,
        74000
    ]
    assert m.weightFraction == [
        0.0020, 0.0040, 0.0003, 0.0002, 0.0030, 0.1150, 0.0060, 0.8495, 0.0050,
        0.0100, 0.0050
    ]
    assert m.enrichmentZaids == []
    assert m.enrichmentIsotopes == []
    assert m.enrichmentVector == []
    assert m.density == 7.874
    assert np.allclose(m.atomDensity, 8.598e-2, 6)
    atomPercentKnown = {
        6000: 9.183e-3,
        14028: 7.244e-3,
        14029: 3.680e-4,
        14030: 2.428e-4,
        15031: 5.34e-4,
        16032: 3.268e-4,
        16033: 2.58e-6,
        16034: 1.462e-5,
        16036: 3.44e-8,
        23050: 8.12e-6,
        23051: 3.240e-3,
        24050: 5.300e-3,
        24052: 1.02198e-1,
        24053: 1.15885e-2,
        24054: 2.885e-3,
        25055: 0.006023,
        26054: 4.96533e-2,
        26056: 7.7945e-1,
        26057: 1.80009e-2,
        26058: 2.3956e-3,
        28058: 3.19826e-3,
        28060: 1.23196e-3,
        28061: 5.35572e-5,
        28062: 1.70772e-4,
        28064: 4.34565e-5,
        42092: 8.35184e-4,
        42094: 5.25942e-4,
        42095: 9.10483e-4,
        42096: 9.58192e-4,
        42097: 5.51808e-4,
        42098: 1.40194e-3,
        42100: 5.64454e-4,
        74180: 1.8e-6,
        74182: 3.975e-4,
        74183: 2.1465e-4,
        74184: 4.596e-4,
        74186: 4.2645e-4
    }
    for k, v in atomPercentKnown.items():
        assert np.allclose(m.atomPercent[k], v, 5)