Esempio n. 1
0
def test_energies_are_order_unity():
    """Tests that energies are approximately around 1.

    """
    a = Material(1.0, 0.0, 1.0, 1.0, 1.0)
    b = Material(1.0, -0.5, 1.0, 1.0, 1.0)  # Lower band edges.
    csnc1 = CoreShellParticle(a, b, 1.0, 1.0)  # Type 2 CSNC. h/e structure.
    energies = csnc1.calculate_s1_energies()
    assert np.all(np.logical_and(1e-1 < energies, energies < 10))
Esempio n. 2
0
def test_adaptive_energy_bracketing_for_high_energies():
    """Tests that high energies are bracketed for extremely small CSNCs.

    """
    a = Material(1.0, 0.0, 1.0, 1.0, 1.0)
    b = Material(1.0, -0.5, 1.0, 1.0, 1.0)  # Lower band edges.
    csnc1 = CoreShellParticle(a, b, 0.1, 0.1)  # Type 2 CSNC. h/e structure.
    energies = csnc1.calculate_s1_energies()
    # print(energies)
    assert np.isclose(energies[0], energies[1])
Esempio n. 3
0
def test_wavenumbers_are_order_unity():
    """Tests that wavenumbers are approximately around 1.

    """
    a = Material(1.0, 0.0, 1.0, 1.0, 1.0)
    b = Material(1.0, -0.5, 1.0, 1.0, 1.0)  # Lower band edges.
    csnc1 = CoreShellParticle(a, b, 1.0, 1.0)  # Type 2 CSNC. h/e structure.
    wavenumbers = csnc1.calculate_wavenumbers()
    assert np.all(
        np.logical_and(1e-1 < abs(wavenumbers),
                       abs(wavenumbers) < 10))
Esempio n. 4
0
def test_thicker_core_requires_smaller_shell_for_localization_eh():
    """Tests that a thicker core leads to carrier confinement in a thinner shell, in type-2 e/h CSNCs.

    """
    a = Material(1.0, 0.0, 1.0, 1.0, 1.0)
    b = Material(1.0, -0.5, 1.0, 1.0, 1.0)  # Lower band edges.
    csnc1 = CoreShellParticle(b, a, 1.0, 1.0)  # Type 2 CSNC. e/h structure.
    csnc2 = CoreShellParticle(b, a, 1.1, 1.0)  # Type 2 CSNC. e/h structure.
    csnc1_shellloc = csnc1.localization_hole_shell()
    csnc2_shellloc = csnc2.localization_hole_shell()
    assert csnc2_shellloc < csnc1_shellloc
Esempio n. 5
0
def test_overlap_integrals_are_consistent():
    a = Material(1.0, 0.0, 1.0, 1.0, 1.0)
    b = Material(1.0, -0.5, 1.0, 1.0, 1.0)  # Lower band edges.
    csnc1 = CoreShellParticle(a, b, 1.0, 1.0)  # Type 2 CSNC. h/e structure.
    assert np.isclose(csnc1.analytical_overlap_integral(),
                      csnc1.numerical_overlap_integral())
Esempio n. 6
0
def test_analytical_overlap_integral_is_at_or_below_one():
    a = Material(1.0, 0.0, 1.0, 1.0, 1.0)
    b = Material(1.0, -0.5, 1.0, 1.0, 1.0)  # Lower band edges.
    csnc1 = CoreShellParticle(a, b, 1.0, 1.0)  # Type 2 CSNC. h/e structure.
    assert csnc1.analytical_overlap_integral() <= 1.0