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):
def reflectivity(bypass_dbr=False,
start_wavelength=849e-9,
stop_wavelength=852e-9,
start_wavelength=800e-9,
stop_wavelength=900e-9,
electric_field=0.,
n_points=100,
l_eam_clad=15e-9,
l_eam_clad=8e-9,
l_vcsel_clad=15e-9,
plot=True):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
......@@ -56,7 +56,7 @@ def reflectivity(bypass_dbr=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=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)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], lengyel=True)
......
import numpy as np
# physical constants
C = 299792458.0 # speed of light [m/s]
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
ME_QW = ME_GAAS # e- 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
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
......@@ -12,7 +12,7 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen
lengyel = False
if temperature == 550 :
if temperature == 550+273.15 :
refractive_index_function = almuneau_complex_550C_algaas_refractive_index
else :
refractive_index_function = afromovitz_varshni_real_algaas_refractive_index
......@@ -177,7 +177,7 @@ def afromovitz_simplified_real_algaas_refractive_index(al, wavelength):
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')
......@@ -216,16 +216,13 @@ def afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature=
return n
def almuneau_complex_550C_algaas_refractive_index(al, wavelength, temperature=550):
if temperature != 550 :
def almuneau_complex_550C_algaas_refractive_index(al, wavelength, temperature=550+273.15):
if temperature != 550+273.15 :
print('error : temperature out of range')
# loads al_array, wavelength_array, n_array (real part) and k_array (imaginary part)
data = np.load('data/550C_AlGaAs_refractive_indices/indices_arrays.npz')
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'])
n = barycenter(al, REFRA_DATA_550['al_array'], wavelength, REFRA_DATA_550['wavelength_array'], REFRA_DATA_550['n_array'])
k = barycenter(al, REFRA_DATA_550['al_array'], wavelength, REFRA_DATA_550['wavelength_array'], REFRA_DATA_550['k_array'])
return n + 1j * k
......
......@@ -6,19 +6,21 @@ OBJECTIFS
Faire l'épitaxie.
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.
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.
Vérifier les recettes avec Alexandre
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É
FTIR.
Calcul carte de chaleur reflectivité
QUESTIONS
......
......@@ -402,6 +402,8 @@ def structure_dbr(period = 6,
linear_grading_low_to_high_al = structure_linear_grading(grading_type = grading_type,
grading_width = grading_width,
period = grading_period,
low_al = low_al,
high_al = high_al,
na = na,
nd = nd,
v_ga11 = v_ga11,
......
......@@ -9,8 +9,8 @@ import optic as op
def eam_structures_description(document_folder=True):
# create the structures
eam = st.structure_eam()
eam_dbr_bypass = st.structure_eam(bypass_dbr=True)
eam = st.structure_eam_vcsel()
eam_dbr_bypass = st.structure_eam_vcsel(bypass_dbr=True)
# structures list
eams = [eam, eam_dbr_bypass]
......@@ -25,50 +25,15 @@ def eam_structures_description(document_folder=True):
else:
writer = pd.ExcelWriter('eam_structures_layers.xlsx', engine='xlsxwriter')
# get the xlsxwriter workbook objects
#workbook = writer.book
# sheets list
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)):
# write the sheets
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
writer.save()
......@@ -76,16 +41,16 @@ 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, vcsel_only=False, eam_only=True, 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='none', mqw_alloy_type='none')
vcsel_eam = st.structure_eam_vcsel(bypass_dbr=False, grading_type='linear digital', mqw_alloy_type='digital')
vcsel_eam_dbr_bypass = st.structure_eam_vcsel(bypass_dbr=True, grading_type='linear digital', mqw_alloy_type='digital')
vcsel_eam_double_alox = st.structure_eam_vcsel(bypass_dbr=False, eam_alox=True, grading_type='linear digital', mqw_alloy_type='digital')
# 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
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
......@@ -94,50 +59,15 @@ def vcsel_eam_structures_description(document_folder=False):
else:
writer = pd.ExcelWriter('data/vcsel_eam_structures_layers.xlsx', engine='xlsxwriter')
# get the xlsxwriter workbook objects
#workbook = writer.book
# sheets list
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)):
# write the sheets
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
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