Commit a37d6f3b authored by Lucas Laplanche's avatar Lucas Laplanche
Browse files

ajout calcul indices à 550°C

parent bbfdd679
...@@ -43,11 +43,11 @@ def al_doping(bypass_dbr=True): ...@@ -43,11 +43,11 @@ def al_doping(bypass_dbr=True):
def reflectivity(bypass_dbr=False, def reflectivity(bypass_dbr=False,
start_wavelength=849e-9, start_wavelength=800e-9,
stop_wavelength=852e-9, stop_wavelength=900e-9,
electric_field=0., electric_field=0.,
n_points=100, n_points=100,
l_eam_clad=15e-9, l_eam_clad=8e-9,
l_vcsel_clad=15e-9, l_vcsel_clad=15e-9,
plot=True): plot=True):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points) wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
...@@ -56,7 +56,7 @@ def reflectivity(bypass_dbr=False, ...@@ -56,7 +56,7 @@ def reflectivity(bypass_dbr=False,
# wavelength in [m] # wavelength in [m]
# wavelength must be a numpy array # wavelength must be a numpy array
for i in tqdm(range(len(wavelength))): for i in tqdm(range(len(wavelength))):
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=True, eam_only=False, grading_type='linear digital', mqw_alloy_type='digital', sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=False, eam_only=True, eam_alox=True, grading_type='linear digital', mqw_alloy_type='digital',
l_eam_clad=l_eam_clad, l_vcsel_clad=l_vcsel_clad) 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) sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], lengyel=True)
......
import numpy as np
# physical constants # physical constants
C = 299792458.0 # speed of light [m/s] C = 299792458.0 # speed of light [m/s]
Q = 1.602176634e-19 # Electron Charge [C] 1C = 1A*1s Q = 1.602176634e-19 # Electron Charge [C] 1C = 1A*1s
...@@ -38,3 +43,8 @@ MZHH_GAAS = 0.48*M0 # heavy hole effective mass p.298 GaAs ...@@ -38,3 +43,8 @@ MZHH_GAAS = 0.48*M0 # heavy hole effective mass p.298 GaAs
ME_QW = ME_GAAS # e- effective mass in well ME_QW = ME_GAAS # e- effective mass in well
MZHH_QW = MZHH_GAAS # heavy hole effective mass in well MZHH_QW = MZHH_GAAS # heavy hole effective mass in well
# refractive indices at 550°C
# loads al_array, wavelength_array, n_array (real part) and k_array (imaginary part)
REFRA_DATA_550 = np.load('data/550C_AlGaAs_refractive_indices/indices_arrays.npz')
import numpy as np import numpy as np
from globals import C, HEV, N0, T from globals import C, HEV, N0, REFRA_DATA_550, T
from sqw_lengyel_absorption import gaas_sqw_absorption_at_wavelength from sqw_lengyel_absorption import gaas_sqw_absorption_at_wavelength
...@@ -12,7 +12,7 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen ...@@ -12,7 +12,7 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen
lengyel = False lengyel = False
if temperature == 550 : if temperature == 550+273.15 :
refractive_index_function = almuneau_complex_550C_algaas_refractive_index refractive_index_function = almuneau_complex_550C_algaas_refractive_index
else : else :
refractive_index_function = afromovitz_varshni_real_algaas_refractive_index refractive_index_function = afromovitz_varshni_real_algaas_refractive_index
...@@ -177,7 +177,7 @@ def afromovitz_simplified_real_algaas_refractive_index(al, wavelength): ...@@ -177,7 +177,7 @@ def afromovitz_simplified_real_algaas_refractive_index(al, wavelength):
def afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature=T): def afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature=T):
if temperature > 100. or temperature < 0. : if temperature > 373.15 or temperature < 273.15 :
print('error : temperature out of range') print('error : temperature out of range')
...@@ -216,16 +216,13 @@ def afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature= ...@@ -216,16 +216,13 @@ def afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature=
return n return n
def almuneau_complex_550C_algaas_refractive_index(al, wavelength, temperature=550): def almuneau_complex_550C_algaas_refractive_index(al, wavelength, temperature=550+273.15):
if temperature != 550 : if temperature != 550+273.15 :
print('error : temperature out of range') print('error : temperature out of range')
# loads al_array, wavelength_array, n_array (real part) and k_array (imaginary part) n = barycenter(al, REFRA_DATA_550['al_array'], wavelength, REFRA_DATA_550['wavelength_array'], REFRA_DATA_550['n_array'])
data = np.load('data/550C_AlGaAs_refractive_indices/indices_arrays.npz') k = barycenter(al, REFRA_DATA_550['al_array'], wavelength, REFRA_DATA_550['wavelength_array'], REFRA_DATA_550['k_array'])
n = barycenter(al, data['al_array'], wavelength, data['wavelength_array'], data['n_array'])
k = barycenter(al, data['al_array'], wavelength, data['wavelength_array'], data['k_array'])
return n + 1j * k return n + 1j * k
......
...@@ -6,19 +6,21 @@ OBJECTIFS ...@@ -6,19 +6,21 @@ OBJECTIFS
Faire l'épitaxie. Faire l'épitaxie.
Faire le fit du FTIR. Faire le fit du FTIR.
Vérifier quelles cellules sont ouvertes lors de l'éptiaxie d'un puit, et corriger le code en conséquence.
Modifier la fiche process pour rajouter les étapes d'oxidation. Vérifier les recettes avec Alexandre
Réinstaller crystal XE et faire les recettes EAM-VCSELs.
Faire les calculs VCSEL EAM avec oxydation eam.
Déterminer quels masques doivent etre en positif ou negatif.
ACCOMPLI ACCOMPLI
Faire les calculs VCSEL EAM avec oxydation eam.
Modifier la fiche process pour rajouter les étapes d'oxidation.
Réinstaller crystal XE et faire les recettes EAM-VCSELs.
Vérifier quelles cellules sont ouvertes lors de l'éptiaxie d'un puit, et corriger le code en conséquence.
Déterminer quels masques doivent etre en positif ou negatif.
ECHOUÉ ECHOUÉ
FTIR. FTIR.
Calcul carte de chaleur reflectivité
QUESTIONS QUESTIONS
......
...@@ -402,6 +402,8 @@ def structure_dbr(period = 6, ...@@ -402,6 +402,8 @@ def structure_dbr(period = 6,
linear_grading_low_to_high_al = structure_linear_grading(grading_type = grading_type, linear_grading_low_to_high_al = structure_linear_grading(grading_type = grading_type,
grading_width = grading_width, grading_width = grading_width,
period = grading_period, period = grading_period,
low_al = low_al,
high_al = high_al,
na = na, na = na,
nd = nd, nd = nd,
v_ga11 = v_ga11, v_ga11 = v_ga11,
......
...@@ -9,8 +9,8 @@ import optic as op ...@@ -9,8 +9,8 @@ import optic as op
def eam_structures_description(document_folder=True): def eam_structures_description(document_folder=True):
# create the structures # create the structures
eam = st.structure_eam() eam = st.structure_eam_vcsel()
eam_dbr_bypass = st.structure_eam(bypass_dbr=True) eam_dbr_bypass = st.structure_eam_vcsel(bypass_dbr=True)
# structures list # structures list
eams = [eam, eam_dbr_bypass] eams = [eam, eam_dbr_bypass]
...@@ -25,50 +25,15 @@ def eam_structures_description(document_folder=True): ...@@ -25,50 +25,15 @@ def eam_structures_description(document_folder=True):
else: else:
writer = pd.ExcelWriter('eam_structures_layers.xlsx', engine='xlsxwriter') writer = pd.ExcelWriter('eam_structures_layers.xlsx', engine='xlsxwriter')
# get the xlsxwriter workbook objects
#workbook = writer.book
# sheets list # sheets list
sheets = ['eam 1', 'eam 2 bypass dbr'] sheets = ['eam 1', 'eam 2 bypass dbr']
# colors formatting
#highlight_yellow = workbook.add_format({'bg_color': '#FFFF99'})
#highlight_light_blue = workbook.add_format({'bg_color': '#99FFFF'})
#highlight_blue = workbook.add_format({'bg_color': '#99CCFF'})
#highlight_violet = workbook.add_format({'bg_color': '#9999FF'})
#highlight_red = workbook.add_format({'bg_color': '#FF99CC'})
#highlight_green = workbook.add_format({'bg_color': '#99FF99'})
#highlight_white = workbook.add_format({'bg_color': '#FFFFFF'})
for i in range(len(eams)): for i in range(len(eams)):
# write the sheets # write the sheets
eams[i].to_excel(writer, sheet_name=sheets[i]) eams[i].to_excel(writer, sheet_name=sheets[i])
# color highlighting of lines
# get the xlsxwriter worksheet objects
#worksheet = writer.sheets[sheets[i]]
#for col in range(eams[i].shape[1]):
# for row in range(eams[i].shape[0]):
# name = eams[i].at[i, 'name']
#
# # blank case
# if 'contact' in name:
# worksheet.write(row +1, col, None, highlight_yellow)
# elif 'quantum' in name:
# worksheet.write(row +1, col, None, highlight_red)
# elif 'barrier' in name:
# worksheet.write(row +1, col, None, highlight_light_blue)
# elif 'grading' in name:
# worksheet.write(row +1, col, None, highlight_light_blue)
# elif 'dbr' in name:
# worksheet.write(row +1, col, None, highlight_blue)
# elif 'clad' in name:
# worksheet.write(row +1, col, None, highlight_green)
# elif 'substrate' in name:
# worksheet.write(row + 1, col, None, highlight_violet)
# else:
# worksheet.write(row + 1, col, None, highlight_white)
# output the file # output the file
writer.save() writer.save()
...@@ -76,16 +41,16 @@ def eam_structures_description(document_folder=True): ...@@ -76,16 +41,16 @@ def eam_structures_description(document_folder=True):
def vcsel_eam_structures_description(document_folder=False): def vcsel_eam_structures_description(document_folder=False):
# create the structures # create the structures
vcsel_eam = st.structure_eam_vcsel(bypass_dbr=False, vcsel_only=False, eam_only=True, grading_type='linear digital', mqw_alloy_type='digital', vcsel_eam = st.structure_eam_vcsel(bypass_dbr=False, grading_type='linear digital', mqw_alloy_type='digital')
l_eam_clad=10e-9, l_vcsel_clad=15e-9) vcsel_eam_dbr_bypass = st.structure_eam_vcsel(bypass_dbr=True, grading_type='linear digital', mqw_alloy_type='digital')
vcsel_eam_dbr_bypass = st.structure_eam_vcsel(bypass_dbr=True, grading_type='none', mqw_alloy_type='none') vcsel_eam_double_alox = st.structure_eam_vcsel(bypass_dbr=False, eam_alox=True, grading_type='linear digital', mqw_alloy_type='digital')
# structures list # structures list
vcsel_eams = [vcsel_eam, vcsel_eam_dbr_bypass] vcsel_eams = [vcsel_eam, vcsel_eam_dbr_bypass, vcsel_eam_double_alox]
# calculate the refraction index # calculate the refraction index
for i in range(len(vcsel_eams)): for i in range(len(vcsel_eams)):
vcsel_eams[i] = op.algaas_super_lattice_refractive_index(vcsel_eams[i], 0., 850e-9, only_real=True) vcsel_eams[i] = op.algaas_super_lattice_refractive_index(vcsel_eams[i], 0., 850e-9)
# create the xlsx document # create the xlsx document
...@@ -94,50 +59,15 @@ def vcsel_eam_structures_description(document_folder=False): ...@@ -94,50 +59,15 @@ def vcsel_eam_structures_description(document_folder=False):
else: else:
writer = pd.ExcelWriter('data/vcsel_eam_structures_layers.xlsx', engine='xlsxwriter') writer = pd.ExcelWriter('data/vcsel_eam_structures_layers.xlsx', engine='xlsxwriter')
# get the xlsxwriter workbook objects
#workbook = writer.book
# sheets list # sheets list
sheets = ['vcsel-eam 1', 'vcsel-eam 2 bypass dbr'] sheets = ['vcsel-eam 1', 'vcsel-eam 2 bypass dbr']
# colors formatting
#highlight_yellow = workbook.add_format({'bg_color': '#FFFF99'})
#highlight_light_blue = workbook.add_format({'bg_color': '#99FFFF'})
#highlight_blue = workbook.add_format({'bg_color': '#99CCFF'})
#highlight_violet = workbook.add_format({'bg_color': '#9999FF'})
#highlight_red = workbook.add_format({'bg_color': '#FF99CC'})
#highlight_green = workbook.add_format({'bg_color': '#99FF99'})
#highlight_white = workbook.add_format({'bg_color': '#FFFFFF'})
for i in range(len(vcsel_eams)): for i in range(len(vcsel_eams)):
# write the sheets # write the sheets
vcsel_eams[i].to_excel(writer, sheet_name=sheets[i]) vcsel_eams[i].to_excel(writer, sheet_name=sheets[i])
# color highlighting of lines
# get the xlsxwriter worksheet objects
#worksheet = writer.sheets[sheets[i]]
#for col in range(eams[i].shape[1]):
# for row in range(eams[i].shape[0]):
# name = eams[i].at[i, 'name']
#
# # blank case
# if 'contact' in name:
# worksheet.write(row +1, col, None, highlight_yellow)
# elif 'quantum' in name:
# worksheet.write(row +1, col, None, highlight_red)
# elif 'barrier' in name:
# worksheet.write(row +1, col, None, highlight_light_blue)
# elif 'grading' in name:
# worksheet.write(row +1, col, None, highlight_light_blue)
# elif 'dbr' in name:
# worksheet.write(row +1, col, None, highlight_blue)
# elif 'clad' in name:
# worksheet.write(row +1, col, None, highlight_green)
# elif 'substrate' in name:
# worksheet.write(row + 1, col, None, highlight_violet)
# else:
# worksheet.write(row + 1, col, None, highlight_white)
# output the file # output the file
writer.save() writer.save()
\ No newline at end of file
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