Esempio n. 1
0
def test_materials_property_map():
    int_map = DummyPartMap([0, 1])
    str_map = DummyPartMap(["part1", "part2"])
    part_materials1 = {0: "InAs", 1: "GaSb"}
    part_materials2 = {"part1": "InAs", "part2": "Al"}
    mat_lib = Materials(matDict={})
    mat_lib.add_material(
        "InAs",
        "semi",
        electronMass=0.026,
        directBandGap=417.0,
        valenceBandOffset=-590.0,
    )
    mat_lib.add_material("GaSb",
                         "semi",
                         electronMass=0.039,
                         directBandGap=812.0,
                         valenceBandOffset=-30.0)
    mat_lib.add_material("Al", "metal", workFunction=4280.0)

    prop_map1 = MaterialPropertyMap(int_map, part_materials1, mat_lib,
                                    "electronMass")
    assert prop_map1.get_part((1.0, 2.0)) == 1
    assert np.all(prop_map1.get_part(-np.ones((2, 3))) == 0)
    assert prop_map1((1.0, 2.0)) == mat_lib["GaSb"]["electronMass"]
    assert np.all(
        prop_map1(-np.ones((2, 3))) == mat_lib["InAs"]["electronMass"])

    prop_map2 = MaterialPropertyMap(str_map,
                                    part_materials2,
                                    mat_lib,
                                    "directBandGap",
                                    eunit="eV",
                                    fill_value=0.0)
    assert prop_map2.get_part((1.0, 2.0)) == "part2"
    assert np.all(prop_map2.get_part(-np.ones((2, 3))) == "part1")
    assert prop_map2((1.0, 2.0)) == 0.0
    assert np.all(
        prop_map2(-np.ones((2, 3))) == mat_lib.find("InAs", "eV")
        ["directBandGap"])
Esempio n. 2
0
def test_materials_property_map():
    int_map = DummyPartMap([0, 1])
    str_map = DummyPartMap(['part1', 'part2'])
    part_materials1 = {0: 'InAs', 1: 'GaSb'}
    part_materials2 = {'part1': 'InAs', 'part2': 'Al'}
    mat_lib = Materials(matDict={})
    mat_lib.add_material('InAs', 'semi', electronMass=0.026, directBandGap=417.,
                         valenceBandOffset=-590.)
    mat_lib.add_material('GaSb', 'semi', electronMass=.039, directBandGap=812.,
                         valenceBandOffset=-30.)
    mat_lib.add_material('Al', 'metal', workFunction=4280.)

    prop_map1 = MaterialPropertyMap(int_map, part_materials1, mat_lib, 'electronMass')
    assert prop_map1.get_part((1., 2.)) == 1
    assert np.all(prop_map1.get_part(-np.ones((2, 3))) == 0)
    assert prop_map1((1., 2.)) == mat_lib['GaSb']['electronMass']
    assert np.all(prop_map1(-np.ones((2, 3))) == mat_lib['InAs']['electronMass'])

    prop_map2 = MaterialPropertyMap(str_map, part_materials2, mat_lib, 'directBandGap', eunit='eV',
                                    fill_value=0.)
    assert prop_map2.get_part((1., 2.)) == 'part2'
    assert np.all(prop_map2.get_part(-np.ones((2, 3))) == 'part1')
    assert prop_map2((1., 2.)) == 0.
    assert np.all(prop_map2(-np.ones((2, 3))) == mat_lib.find('InAs', 'eV')['directBandGap'])