def test_asymptotic_shell_localization(): 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. csnc2 = CoreShellParticle(b, a, 1.0, 1.0) # Type 2 CSNC. e/h structure. assert np.isclose( csnc1.localization_electron_shell(1e6), csnc1.localization_electron_shell(asymp=True), ) assert np.isclose(csnc2.localization_hole_shell(1e6), csnc2.localization_hole_shell(asymp=True))
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
# plt.gcf().set_size_inches(10, 8) # ax.set_xlabel('Core radius [nm]') # ax.set_ylabel('Shell width [nm]') # ax.set_zlabel('$\Theta$') # plt.show() # ===================================================================== def localization_in_core_eh(shell_width): return cseh.localization_electron_core(shell_width) def localization_in_shell_eh(core_width): return cseh.localization_hole_shell(core_width) vec_localization_in_core_eh = np.vectorize(localization_in_core_eh) vec_localization_in_shell_eh = np.vectorize(localization_in_shell_eh) # ===================================================================== core_radii_for_image = np.linspace(0.5, 4, 20) shell_radii_for_image = np.linspace(0.2, 2, 20) shell_radii_for_localization = vec_localization_in_shell_eh( core_radii_for_image) shell_radii_asymptote = cseh.localization_hole_shell(asymp=True) core_radii_for_localization = vec_localization_in_core_eh( shell_radii_for_image) core_radii_asymptote = cseh.localization_electron_core(asymp=True) # plt.plot(core_radii_for_image, shell_radii_for_localization, core_radii_for_localization, shell_radii_for_image) # plt.xlim(0.5, 4) # plt.ylim(0.2, 2) # plt.show()