import matplotlib.pyplot as plt import numpy as np from solcore.absorption_calculator import calculate_absorption_profile from solcore import material, si from solcore.structure import Structure, Layer # First we defined a couple of materials, for example, GaAs and AlGAs GaAs = material('GaAs')(T=300) AlGaAs = material('AlGaAs')(T=300, Al=0.3) # Now, let's build the structure my_structure = Structure([ Layer(si(30, 'nm'), material=AlGaAs), Layer(si(3000, 'nm'), material=GaAs), Layer(si(300, 'um'), material=GaAs), ]) # We want to calculate the absorption profile of this structure as a function of the position and wavelength wl = np.linspace(400, 1000, 200) out = calculate_absorption_profile(my_structure, wl, steps_size=1, z_limit=3000) # Finally, we plot the absorption profile. Note that absorption at short wavelengths take place near the surface of the # structure, in the AlGaAs layer and top of the GaAs layer, while longer wavelengths penetrate more. Wavelengths beyond # the GaAs band edge are not absorbed. plt.figure(1) ax = plt.contourf(out['position'], wl, out['absorption'], 200) plt.xlabel('Position (nm)') plt.ylabel('Wavelength (nm)')
MatParams["B1s"] = 1.0 MatParams["Gamma_Eg_ID"] = 0.3 MatParams["Alpha_Eg_ID"] = 0.0 MatParams["E1"] = 2.8 MatParams["E1_d1"] = 2.9 MatParams["Gamma_E1"] = 0.1 MatParams["E2"] = 4.72 MatParams["C"] = 3.0 MatParams["Alpha_E2"] = 0.04 MatParams["Gamma_E2"] = 0.19 # Must define a structure object containing the required oscillator functions. The oscillator type and material # parameters are both passed to individual 'Oscillators' in the structure... Adachi_GaAs = Structure([ Oscillator(oscillator_type="E0andE0_d0", material_parameters=MatParams), Oscillator(oscillator_type="E1andE1_d1", material_parameters=MatParams), Oscillator(oscillator_type="E_ID", material_parameters=MatParams), Oscillator(oscillator_type="E2", material_parameters=MatParams) ]) Output = CPPB_Model.eps_calc(Adachi_GaAs, E) # PLOT OUTPUT... fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(7, 4.5)) # Subplot I :: Real part of the dielectric function. ax1.set_yscale("linear") ax1.set_xlim(0, 5.3) ax1.set_ylim(-14, 27) ax1.plot(Palik_Eps1[:, 0], Palik_Eps1[:, 1], label="Exp. Data (Palik)", marker='o', ls='none', markerfacecolor='none', markeredgecolor=colours("Red"))
"hwhm": si("6meV"), "dimensionality": 0.16, "line_shape": "Gauss" } # plt.figure(figsize=(4, 4.5)) for j, i in enumerate(comp): # We create the QW material at the given composition QW = material("InGaAs")(T=293, In=i, strained=True) # And the layer well_layer = Layer(width=si("7.2nm"), material=QW) # The following lines create the QW structure, with different number of QWs and interlayers test_structure = Structure( [barrier_layer, inter, well_layer, inter, barrier_layer], substrate=bulk) # Finally, the quantum properties are claculated here output = QM.schrodinger(test_structure, quasiconfined=0, num_eigenvalues=20, alpha_params=alpha_params, calculate_absorption=True) alfa = output[0]['alphaE'](E) plt.plot(1240 / (E / q), alfa / 100, label='{}%'.format(int(i * 100))) plt.xlim(826, 1100) plt.ylim(0, 23000) plt.xlabel('Wavelength (nm)')
Air = material("Air")(T=T) TiO2 = material("TiO2", sopra=True)(T=T) # for the nanoparticles GaAs = material("GaAs")(T=T) # define a flat layer and another with circular discs with the same thickness Flat = Layer(si('50nm'), TiO2) NP_layer = Layer(si('50nm'), Air, geometry=[{ 'type': 'circle', 'mat': TiO2, 'center': (200, 200), 'radius': 50 }]) flat_struct = Structure([Flat]) np_struct = Structure([NP_layer]) # And the wavelength in which the solve the problem wl = np.linspace(300, 1000, 150) rat_flat = calculate_rat_rcwa(flat_struct, size=((400, 0), (0, 400)), orders=10, wavelength=wl, substrate=GaAs, incidence=Air) rat_np = calculate_rat_rcwa(np_struct, size=((400, 0), (0, 400)), orders=10, wavelength=wl,
"line_shape": "Gauss" } comp = [0.05, 0.10, 0.15, 0.20] colors = plt.cm.jet(np.linspace(0, 1, len(comp))) plt.figure(figsize=(6, 4.5)) for j, i in enumerate(comp): QW = material("InGaAs")(T=293, In=i) QW.strained = True well_layer = Layer(width=si("7.2nm"), material=QW) # test_structure = Structure([top_layer, barrier_layer, inter] + 1 * [well_layer, inter, barrier_layer, inter] + # [bottom_layer]) test_structure = Structure([barrier_layer, inter] + 1 * [well_layer, inter] + [barrier_layer]) # test_structure = Structure([top_layer, barrier_layer] + 10 * [well_layer, barrier_layer] + # [bottom_layer]) test_structure.substrate = bulk output = schrodinger(test_structure, quasiconfined=0, mode='kp4x4', plot_bands=False, num_eigenvalues=20, alpha_params=alpha_params, calculate_absorption=True) alfa = output[0]['alphaE'](E)