### Solcore - Schrodinger_QW_absorption¶

Import libraries

In [ ]:
import matplotlib.pyplot as plt
import numpy as np

from solcore import si, material
from solcore.structure import Layer, Structure
import solcore.quantum_mechanics as QM
from solcore.constants import vacuum_permittivity, q


First we create the materials we need

In [ ]:
bulk = material("GaAs")(T=293, strained=False)
barrier = material("GaAsP")(T=293, P=0.1, strained=True)


As well as some of the layers

In [ ]:
top_layer = Layer(width=si("30nm"), material=bulk)
inter = Layer(width=si("3nm"), material=bulk)
barrier_layer = Layer(width=si("15nm"), material=barrier)
bottom_layer = top_layer


We are going to calculate the absorption coefficient of InGaAs QWs of fixed thickness but different compositions

In [ ]:
num_comp = 5
comp = np.linspace(0.05, 0.25, num_comp)
colors = plt.cm.jet(np.linspace(0, 1, num_comp))


The absorption coefficients will be calculated at these energies and stored in alfas

In [ ]:
num_energy = 300
E = np.linspace(1.15, 1.5, num_energy) * q


We define some parameters need to calculate the shape of the excitonic absorption

In [ ]:
alpha_params = {
"well_width": si("7.2nm"),
"theta": 0,
"eps": 12.9 * vacuum_permittivity,
"espace": E,
"hwhm": si("6meV"),
"dimensionality": 0.16,
"line_shape": "Gauss"
}


Plot results:

In [ ]:
# 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['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)')
plt.ylabel('$\\alpha$ cm$^{-1}$')
plt.legend(loc='upper right', frameon=False)
plt.tight_layout()

plt.show()