Commit 0c100e6f authored by Lucas Laplanche's avatar Lucas Laplanche
Browse files

maj

parent b6a8a0cc
......@@ -55,15 +55,13 @@ def al_doping(bypass_dbr=True):
def reflectivity(vcsel_only=False,
eam_only=True,
bypass_dbr=False,
start_wavelength=845e-9,
stop_wavelength=855e-9,
def reflectivity(bypass_dbr=False,
start_wavelength=840e-9,
stop_wavelength=860e-9,
electric_field=0.,
n_points=50,
l_eam_clad=15.5e-9,
l_vcsel_clad=8.5e-9,
n_points=100,
l_eam_clad=15e-9,
l_vcsel_clad=10e-9,
plot=True):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
r = np.zeros(len(wavelength))
......@@ -71,13 +69,9 @@ def reflectivity(vcsel_only=False,
# wavelength in [m]
# wavelength must be a numpy array
for i in tqdm(range(len(wavelength))):
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr,
vcsel_only = vcsel_only,
eam_only = eam_only,
l_eam_clad = l_eam_clad,
l_vcsel_clad = l_vcsel_clad,
grading_type = 'linear slope',
mqw_alloy_type = 'mean')
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=True, grading_type='none', mqw_alloy_type='none',
l_eam_clad=l_eam_clad, l_vcsel_clad=l_vcsel_clad)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], lengyel=True)
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
......@@ -146,12 +140,14 @@ def reflectivity_heatmap(bypass_dbr=True,
def electromagnetic_amplitude(bypass_dbr=False, electric_field=0., wavelength=850e-9):
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=False, grading_type='none', mqw_alloy_type='none', l_eam_clad = 15e-9, l_vcsel_clad=8e-9)
l_eam_clad = 15e-9
l_vcsel_clad = 10e-9
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=True, grading_type='none', mqw_alloy_type='none', l_eam_clad = l_eam_clad, l_vcsel_clad=l_vcsel_clad)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength)
sl = pt.cut_in_equal_layers_thickness(sl, 5e-9)
em = op.em_amplitude_smm(sl, wavelength)
sl.insert(sl.shape[1], 'electromagnetic_amplitude', value=em)
plt.plot_refra_em(sl, '- vcsel cladding = ' +str(8e-9))
plt.plot_refra_em(sl, ' - eam_clad=' +str(l_eam_clad) +' - alox_end=35nm - vcsel_clad=' +str(l_vcsel_clad))
def vcsel_electromagnetic_resonnance(electric_field=0.,
......@@ -209,13 +205,12 @@ def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0.,
def animation_clad_coupling(bypass_dbr=False, electric_field=0., wavelength=850e-9):
cladding = np.linspace(10e-9, 20e-9, 9)
cladding = np.linspace(9.9e-9, 10.1e-9, 9)
for cl in cladding:
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=False, grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad=cl, l_vcsel_clad=8.345e-9)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength, lengyel=False)
sl['refractive_index'] = sl['refractive_index'].apply(np.real)
sl = pt.cut_in_equal_layers_thickness(sl, 1e-8)
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=True, grading_type='none', mqw_alloy_type='none', l_vcsel_clad=cl)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength)
sl = pt.cut_in_equal_layers_thickness(sl, 5e-9)
em = op.em_amplitude_smm(sl, wavelength)
sl.insert(sl.shape[1], 'electromagnetic_amplitude', value=em)
plt.plot_refra_em(sl, str(cl))
......
......@@ -11,7 +11,11 @@ from sqw_lengyel_absorption import gaas_sqw_absorption_at_wavelength
def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelength, temperature=T, lengyel=True):
def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelength, temperature=T, lengyel=True, only_real=False):
if only_real:
lengyel = False
for i in range(len(super_lattice)):
name = super_lattice.at[i, 'name']
al = super_lattice.at[i, 'al']
......@@ -55,7 +59,10 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen
# get the already computed quantum well refractive index value
n = calculated_qw_layers.at[0, 'refractive_index']
super_lattice.at[i, 'refractive_index'] = n
if only_real:
super_lattice.at[i, 'refractive_index'] = np.real(n)
else:
super_lattice.at[i, 'refractive_index'] = n
# layer is NOT a quantum well
......@@ -63,18 +70,21 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen
# refractive index value
n = afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature=temperature)
na = super_lattice.at[i, 'na']
nd = super_lattice.at[i, 'nd']
if only_real:
super_lattice.at[i, 'refractive_index'] = np.real(n)
else:
na = super_lattice.at[i, 'na']
nd = super_lattice.at[i, 'nd']
# N doped
if nd > na:
n += -1j*5e-18*nd*1e-4*wavelength/(4*np.pi)
# N doped
if nd > na:
n += -1j * 5e-18 * nd * 1e-4 * wavelength / (4 * np.pi)
# P doped
elif na > nd:
n += -1j*11.5e-18*na*1e-4*wavelength/(4*np.pi)
# P doped
elif na > nd:
n += -1j * 11.5e-18 * na * 1e-4 * wavelength / (4 * np.pi)
super_lattice.at[i, 'refractive_index'] = n
super_lattice.at[i, 'refractive_index'] = n
return super_lattice
......
......@@ -229,7 +229,7 @@ def structure_eam_vcsel(vcsel_only = False,
# vcsel mqw
if vcsel_mqw:
linear_grading_low_to_high_al = structure_linear_grading(grading_type=grading_type,
linear_grading_low_to_high_al = structure_linear_grading(grading_type='mean',
grading_width=90e-9,
period=40,
low_al = 0.3,
......@@ -478,6 +478,15 @@ def structure_dbr(period = 6,
sl = sl.append(high_al_three_half_grading, ignore_index=True)
sl = sl.append(linear_grading_high_to_low_al, ignore_index=True)
elif next_structure_is_alox:
sl = sl.append(high_al_layer, ignore_index=True)
for i in range(period -1):
sl = sl.append(low_al_layer, ignore_index=True)
sl = sl.append(high_al_layer, ignore_index=True)
sl = sl.append(low_al_layer, ignore_index=True)
else:
sl = sl.append(high_al_layer, ignore_index=True)
......@@ -547,8 +556,15 @@ def structure_linear_grading(grading_type = 'linear digital',
sl = sl.append(pd.DataFrame([['dbr ' +doping_type +' linear slope grading', layer_thickness, al_content, na, nd, False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
elif 'mean' in grading_type:
al_content = (low_al +high_al) / 2.
sl = sl.append(pd.DataFrame([['dbr ' + doping_type + ' linear slope grading', grading_width, al_content, na,
nd, False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
else:
print('ERROR, no correct grading type selected.')
pass
return sl
......@@ -641,7 +657,7 @@ def structure_middle_contact(bypass_dbr = False,
def structure_alox(period = 10,
alox_thickness = 30e-9,
end_thickness = 40e-9,
end_thickness = 35e-9,
alox_mean_al = 0.98,
low_al = 0.9,
high_al = 1.,
......
......@@ -76,7 +76,8 @@ def eam_structures_description(document_folder=True):
def vcsel_eam_structures_description(document_folder=False):
# create the structures
vcsel_eam = st.structure_eam_vcsel(bypass_dbr=False, grading_type='none', mqw_alloy_type='none')
vcsel_eam = st.structure_eam_vcsel(bypass_dbr=False, vcsel_only=True, grading_type='none', mqw_alloy_type='none',
l_eam_clad=15e-9, l_vcsel_clad=15e-9)
vcsel_eam_dbr_bypass = st.structure_eam_vcsel(bypass_dbr=True, grading_type='none', mqw_alloy_type='none')
# structures list
......@@ -84,7 +85,8 @@ def vcsel_eam_structures_description(document_folder=False):
# calculate the refraction index
for i in range(len(vcsel_eams)):
vcsel_eams[i] = op.algaas_super_lattice_refractive_index(vcsel_eams[i], 0., 850e-9)
vcsel_eams[i] = op.algaas_super_lattice_refractive_index(vcsel_eams[i], 0., 850e-9, only_real=True)
# create the xlsx document
if document_folder:
......
Markdown is supported
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