Commit 4d3ee0fa authored by Lucas Laplanche's avatar Lucas Laplanche
Browse files

rien qui fonctionne comme d'hab

parent 75893edf
......@@ -46,15 +46,16 @@ def zandberg_electromagnetic_amplitude(electric_field=0., wavelength=1e-6):
sl = st.structure_zandbergen()
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength)
sl = pt.cut_in_equal_layers_thickness(sl, 1e-9)
em = op.em_amplitude_tmm(sl, wavelength)
sl['electromagnetic_amplitude'] = em.tolist()
em = op.em_amplitude_smm(sl, wavelength)
sl.insert(sl.shape[1], 'electromagnetic_amplitude', value=em)
plt.plot_refra_em(sl)
def mqw_psi(lz=0.01e-9, electric_field=0., wavelength=850e-9):
sl = st.structure_eam(air=False, top_dbr=False, bot_dbr=False, shared_dbr=False, contact=False, substrate=False)
sl = st.structure_eam(air=False, top_dbr=False, bot_dbr=False, shared_dbr=False, contact=False, substrate=False, amount_qw=5)
sl = pt.cut_in_equal_layers_thickness(sl, 1e-11)
v_e, v_hh, eig_e, psi_e, eig_hh, psi_hh = qt.solve_schrodinger(sl)
np.savez_compressed('v_e', v_e)
np.savez_compressed('v_hh', v_hh)
......@@ -62,7 +63,7 @@ def mqw_psi(lz=0.01e-9, electric_field=0., wavelength=850e-9):
np.savez_compressed('psi_e', psi_e[0, :])
np.savez_compressed('eig_hh', eig_hh)
np.savez_compressed('psi_hh', psi_hh[0, :])
# plt.plot_psi(lz, v_e, psi_e)
plt.plot_psie()
def benchmark_refractive_index():
......
......@@ -411,7 +411,7 @@ def scattering_matrix_layer(vi, vg, xi):
return s
def redheffer_star_product(sa, sb, e):
def redheffer_star_product(sa, sb):
ba = np.matmul(sb[0, 0], sa[1, 1])
ab = np.matmul(sa[1, 1], sb[0, 0])
......@@ -426,11 +426,8 @@ def redheffer_star_product(sa, sb, e):
sb[1, 1] +np.matmul(np.matmul(f, sa[1, 1]), sb[0, 1])
]])
amp = np.abs(sab[0, 0][0, 0] +sab[1, 1][0, 0])**2
e = np.append(e, amp)
return sab, e
return sab
def em_amplitude_smm(super_lattice, wavelength):
......@@ -475,7 +472,13 @@ def em_amplitude_smm(super_lattice, wavelength):
s_i = scattering_matrix_layer(v_i, v_global, x_i)
# update global scattering matrix
s_global, e = redheffer_star_product(s_global, s_i, e)
s_global = redheffer_star_product(s_global, s_i)
# calculate transmitted and reflected fields
e_ref = np.matmul( s_global[0, 0], np.array([1., 0.]) )
e_trm = np.matmul( s_global[1, 0], np.array([1., 0.]) )
amplitude = np.abs(e_ref[0] +e_trm[0])**2
e = np.append(e, amplitude)
# compute reflection side scattering matrix
......
......@@ -40,8 +40,8 @@ def hamiltonian(sl, particle):
m = mass(al)
a = - HREV**2 /(2 * m * lz**2)
b = HREV**2 /(m * lz**2) -sl.at[i, barrier]
a = -HREV**2 /(2 * m * lz**2)
b = HREV**2 /(m * lz**2) +sl.at[i, barrier]
c = a
h[i +1 , i ] = a
......@@ -63,12 +63,16 @@ def algaas_potential_barrier(al):
valence_band_offset = 0.33 # G.Ji, D.Huang, U.K.Reddy, H.Unlu, T.S.Henderson, and H.Morko9 1987
conduction_band_offset = 1. -valence_band_offset
eg_al_x = EG_GAAS +1.087 * al +0.438 * al**2
delta_eg = eg_al_x -EG_GAAS
# http://www.ioffe.ru/SVA/NSM/Semicond/AlGaAs/bandstr.html
if al<0.45:
delta_eg = 1.247*al
else:
delta_eg = 1.9 -EG_GAAS +0.125*al +0.143*al**2
v_hh = valence_band_offset * delta_eg
v_e = conduction_band_offset * delta_eg
return v_e, v_hh
......@@ -92,16 +96,6 @@ def algaas_super_lattice_potential_barrier(sl):
def last_bound_states_index(v, e):
limit = np.max(v)
for i in range(e.shape[0]):
if e[i]>limit:
return i -1
def solve_schrodinger(sl):
# compute the potential barrier array
sl = algaas_super_lattice_potential_barrier(sl)
......@@ -111,6 +105,7 @@ def solve_schrodinger(sl):
# solve the schrodinger equation
eig_e, psi_e = np.linalg.eig(h_e)
# delete the hamiltonian in order to free RAM
np.savez_compressed('h_e', h_e)
del h_e
# compute the hamiltonian for heavy holes
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment