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

maj

parent 3b75fce7
......@@ -16,21 +16,33 @@ import vertex_70 as vtx
def refra_doping(bypass_dbr=True, electric_field=0., wavelength=850e-9):
sl = st.structure_eam(bypass_dbr=bypass_dbr)
sl = st.structure_eam_vcsel(eam_only=True, bypass_dbr=bypass_dbr)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength)
plt.plot_refra_doping(sl)
def al_doping(bypass_dbr=True):
sl = st.structure_eam(bypass_dbr=bypass_dbr)
sl = st.structure_eam_vcsel(eam_only=True, bypass_dbr=bypass_dbr)
plt.plot_al_doping(sl)
def reflectivity(bypass_dbr=True, start_wavelength=820e-9, stop_wavelength=880e-9, electric_field=0., n_points=100):
def reflectivity(vcsel_only=False,
eam_only=True,
bypass_dbr=True,
start_wavelength=820e-9,
stop_wavelength=880e-9,
electric_field=0.,
n_points=100,
l_vcsel_clad=32e-9):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
r = op.reflectivity(bypass_dbr, electric_field, wavelength)
r = op.reflectivity(bypass_dbr,
electric_field,
wavelength,
vcsel_only=vcsel_only,
eam_only=eam_only,
l_vcsel_clad=l_vcsel_clad)
plt.plot_reflectivity(wavelength, r)
......@@ -64,7 +76,7 @@ def reflectivity_heatmap(bypass_dbr=True,
def electromagnetic_amplitude(bypass_dbr=True, electric_field=0., wavelength=850e-9):
sl = st.structure_eam(bypass_dbr=bypass_dbr)
sl = st.structure_eam_vcsel(eam_only=True, bypass_dbr=bypass_dbr)
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_smm(sl, wavelength)
......@@ -74,7 +86,7 @@ def electromagnetic_amplitude(bypass_dbr=True, electric_field=0., wavelength=850
def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0., wavelength=850e-9):
sl1 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=10e-9, amount_eam_qw=25)
sl2 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=15e-9, amount_eam_qw=25)
sl2 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=10e-9, amount_eam_qw=25)
sl3 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=20e-9, amount_eam_qw=25)
sl1 = op.algaas_super_lattice_refractive_index(sl1, electric_field, wavelength)
......@@ -85,6 +97,10 @@ def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0.,
sl2 = pt.cut_in_equal_layers_thickness(sl2, 1e-8)
sl3 = pt.cut_in_equal_layers_thickness(sl3, 1e-8)
#sl1 = sl1[::-1].reset_index(drop=True)
sl2 = sl2[::-1].reset_index(drop=True)
#sl3 = sl3[::-1].reset_index(drop=True)
em1 = op.em_amplitude_smm(sl1, wavelength)
em2 = op.em_amplitude_smm(sl2, wavelength)
em3 = op.em_amplitude_smm(sl3, wavelength)
......@@ -93,11 +109,15 @@ def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0.,
sl2.insert(sl2.shape[1], 'electromagnetic_amplitude', value=em2)
sl3.insert(sl3.shape[1], 'electromagnetic_amplitude', value=em3)
#sl1 = sl1[::-1].reset_index(drop=True)
sl2 = sl2[::-1].reset_index(drop=True)
#sl3 = sl3[::-1].reset_index(drop=True)
plt.plot_refra_clad_coupling_em(sl1, sl2, sl3)
def animation_clad_coupling(bypass_dbr=False, electric_field=0., wavelength=850e-9):
cladding = np.linspace(0.1e-9, 20e-9, 20)
cladding = np.linspace(1e-9, 50e-9, 10)
for cl in cladding:
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=cl, amount_eam_qw=25)
......@@ -170,7 +190,7 @@ def ftir_theory_comparison_reflectivity(filename='eam_2', electric_field=0., doc
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, amount_qw=5)
sl = st.structure_eam_vcsel(eam_mqw_only=True, amount_eam_qw=5)
sl = pt.cut_in_equal_layers_thickness(sl, lz)
v_e, v_hh, eig_e, psi_e, eig_hh, psi_hh = qt.solve_schrodinger(sl)
np.savez_compressed('v_e', v_e)
......
......@@ -177,13 +177,18 @@ def absorption(n, d, wavelength):
def reflectivity(bypass_dbr, electric_field, wavelength):
def reflectivity(bypass_dbr,
electric_field,
wavelength,
vcsel_only = False,
eam_only = True,
l_vcsel_clad = 32e-9):
r = np.zeros(len(wavelength))
# wavelength in [m]
# wavelength must be a numpy array
for i in tqdm(range(len(wavelength))):
sl = st.structure_eam(bypass_dbr=bypass_dbr)
sl = st.structure_eam_vcsel(vcsel_only=vcsel_only, eam_only=eam_only, bypass_dbr=bypass_dbr, l_vcsel_clad=l_vcsel_clad)
sl = algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i])
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
......@@ -197,7 +202,7 @@ def reflectivity(bypass_dbr, electric_field, wavelength):
def reflectivity_meshgrid(bypass_dbr, electric_field, wavelength, temperature):
# get the dimension of the dataframe
df = st.structure_eam(bypass_dbr=bypass_dbr)
df = st.structure_eam_vcsel(eam_only=True, bypass_dbr=bypass_dbr)
dim = df.shape[0]
# create empty reflection map
......@@ -217,7 +222,7 @@ def reflectivity_meshgrid(bypass_dbr, electric_field, wavelength, temperature):
# wavelength in [m]
# wavelength must be a numpy array
for i in tqdm(range(len(wavelength))):
sl = st.structure_eam(bypass_dbr=bypass_dbr)
sl = st.structure_eam_vcsel(eam_only=True, bypass_dbr=bypass_dbr)
sl = algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], temperature)
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
......
......@@ -49,8 +49,11 @@ def insert_row(row_number, df, row_value):
def cut_in_equal_layers_thickness(super_lattice, step):
i = 0
def cut_in_equal_layers_thickness(super_lattice, step, ignore_air=True):
if ignore_air:
i = 0
else:
i = 0
# get a list of thicknesses
total = super_lattice['thickness'].copy()
......
......@@ -22,7 +22,7 @@ QUESTIONS
Si oui alors modifier l'épaisseur des puits et des barrières de confinement n'a pas d'influence.
Je remarque que Krassimir et Ludovic ont mis un grading autour de la cavité du vcsel, ne devrais-je pas faire de même avec l'EAM?
Est-ce que c'est ok si je remplace le grading du vcsel par mon grading de 90nm? (90 nm de 0% à 100% au lieu de 30% à 60%)?
Il y a aussi en petit blip autour de la cavité vcsel grading des figures de Krassimir... ?
Il y a aussi en petit blip autour de la cavité vcsel grading des figures de Krassimir... ? AlOx?
La couche AlOx a soit-disant 98% d'aluminium, comment la fabrique-t-on? Dois-je considérer dans les calculs qu'elle fait 90%, 98%, 100%?
Je n'ai pas le même vcsel que Ludovic, est-ce que je rajoute un cladding ou je fais comme lui sachant que je ne connais pas ses alliages digitaux.
Au vu des ambiguïtés de la différence entre le calcul de Krassimir et ma structure, peut être étalonner le cladding avec le calcul amplitue du champ electromagnétique.
......@@ -37,6 +37,7 @@ PRESENTATION
FTIR EAM.
AFM EAM.
Caractérisations de l'AC450CT.
Méthode accordage vcsel eam.
Comparaison FTIR calculs en fonction vitesses croissances.
TLM si terminées.
......@@ -276,6 +276,7 @@ def plot_refra_em(sl):
def plot_refra_clad_coupling_em(sl1, sl2, sl3):
# sl[sl['name'].str.contains('cladding')].reset_index(drop=True).iloc[0]['thickness']
# remove the substrate layer
sl1 = sl1.drop(sl1.shape[0] -1, axis=0)
sl2 = sl2.drop(sl2.shape[0] - 1, axis=0)
......
......@@ -7,158 +7,17 @@ import optic as op
def structure_eam(air = True,
mqw = True,
top_dbr = True,
bot_dbr = True,
bypass_dbr = False,
shared_dbr = True,
contact = True,
substrate = True,
amount_qw = 25,
eam_mean_al = 0.22,
l_qw = 8.27e-9,
l_cb = 10.3e-9,
l_clad = 2.8e-9,
top_dbr_period = 6,
bot_dbr_period = 8,
shared_dbr_period = 12,
grading_type = 'linear',
grading_width = 20e-9,
grading_period = 10,
v_ga6 = 100,
v_ga11 = 850,
v_al5 = 900,
v_al12 = 150):
# times are in [s]
# speeds are in [nm/h]
# super lattice
sl = pd.DataFrame(columns = ['name', 'thickness', 'al', 'na', 'nd', 'refractive_index', 'ga6', 'ga11', 'al5', 'al12'])
# air
if air:
sl = sl.append(pd.DataFrame([['air', 100e-9, 0., 0., 0., False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
# top contact
if contact:
sl = sl.append(pd.DataFrame([['top contact', 50e-9, 0., 0., 5e18, False, True, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
# top distributed Bragg reflector
if top_dbr:
dbr = structure_dbr(period = top_dbr_period,
nd = 2e18,
grading = grading_type,
grading_width = grading_width,
grading_period = grading_period,
previous_structure_is_top_contact = True,
next_structure_is_cladding = True,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al5 = v_al5,
v_al12 = v_al12)
sl = sl.append(dbr, ignore_index=True)
# mqw
if mqw:
mqw = structure_mqw(amount_qw = amount_qw,
mean_al = eam_mean_al,
l_qw = l_qw,
l_cb = l_cb,
l_clad = l_clad,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al12 = v_al12)
sl = sl.append(mqw, ignore_index = True)
def structure_eam_vcsel(vcsel_only = False,
eam_only = False,
eam_mqw_only = False,
# middle contact
if contact & bypass_dbr:
middle_contact, previous_layer_is_dbr = structure_middle_contact(bypass_dbr = bypass_dbr,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period)
sl = sl.append(middle_contact, ignore_index=True)
# bottom distributed Bragg reflector
if bot_dbr & (not bypass_dbr):
dbr = structure_dbr(period = bot_dbr_period,
na = 2e18,
grading = grading_type,
grading_width = grading_width,
grading_period = grading_period,
previous_structure_is_cladding = True,
next_structure_is_contact = True,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al5 = v_al5,
v_al12 = v_al12)
sl = sl.append(dbr, ignore_index=True)
elif bot_dbr & bypass_dbr:
dbr = structure_dbr(period = bot_dbr_period,
na = 2e18,
grading = grading_type,
grading_width = grading_width,
grading_period = grading_period,
next_structure_is_dbr = True,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al5 = v_al5,
v_al12 = v_al12)
sl = sl.append(dbr, ignore_index=True)
# middle contact
if contact & (not bypass_dbr):
middle_contact, previous_layer_is_dbr = structure_middle_contact(bypass_dbr = bypass_dbr,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period)
sl = sl.append(middle_contact, ignore_index=True)
# bottom distributed Bragg reflector
if shared_dbr:
dbr = structure_dbr(period = shared_dbr_period,
na = 2e18,
grading = grading_type,
grading_width = grading_width,
grading_period = grading_period,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al5 = v_al5,
v_al12 = v_al12)
sl = sl.append(dbr, ignore_index=True)
# substrate
if substrate:
sl = sl.append(pd.DataFrame([['substrate', 600e-6, 0., 0., 0., False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
return sl
def structure_eam_vcsel(air = True,
contact = True,
air = True,
top_contact = True,
top_eam_dbr = True,
eam_mqw = True,
bypass_dbr = False,
bot_eam_dbr = True,
middle_contact = True,
shared_dbr = True,
alox = True,
vcsel_mqw = True,
......@@ -169,13 +28,13 @@ def structure_eam_vcsel(air = True,
eam_mean_al = 0.22,
l_eam_qw = 8.27e-9,
l_eam_cb = 10.3e-9,
l_eam_clad = 2.8e-9,
l_eam_clad = 13e-9,
amount_vcsel_qw = 3,
vcsel_mean_al = 0.3,
l_vcsel_qw = 8.5e-9,
l_vcsel_cb = 10e-9,
l_vcsel_clad = 5e-9,
vcsel_mean_al = 0.22,
l_vcsel_qw = 8.27e-9,
l_vcsel_cb = 10.3e-9,
l_vcsel_clad = 32e-9,
top_eam_dbr_period = 6,
bot_eam_dbr_period = 8,
......@@ -194,19 +53,60 @@ def structure_eam_vcsel(air = True,
# speeds are in [nm/h]
# prioritary boolean setup
# overwrite default config
if vcsel_only:
air = True
top_contact = False
top_eam_dbr = False
eam_mqw = False
bypass_dbr = False
bot_eam_dbr = False
middle_contact = True
shared_dbr = True
alox = True
vcsel_mqw = True
bot_vcsel_dbr = True
substrate = True
elif eam_only:
air = True
top_contact = True
top_eam_dbr = True
eam_mqw = True
bot_eam_dbr = True
middle_contact = True
shared_dbr = True
alox = False
vcsel_mqw = False
bot_vcsel_dbr = False
substrate = True
elif eam_mqw_only:
air = False
top_contact = False
top_eam_dbr = False
eam_mqw = True
bot_eam_dbr = False
middle_contact = False
shared_dbr = False
alox = False
vcsel_mqw = False
bot_vcsel_dbr = False
substrate = False
# super lattice
sl = pd.DataFrame(columns = ['name', 'thickness', 'al', 'na', 'nd', 'refractive_index', 'ga6', 'ga11', 'al5', 'al12'])
# air
if air:
sl = sl.append(pd.DataFrame([['air', 100e-9, 0., 0., 0., False, False, False, False]],
sl = sl.append(pd.DataFrame([['air', 1000e-9, 0., 0., 0., False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
# top contact
if contact:
if top_contact:
sl = sl.append(pd.DataFrame([['top contact', 50e-9, 0., 0., 5e18, False, True, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
......@@ -242,7 +142,7 @@ def structure_eam_vcsel(air = True,
# middle contact
if contact & bypass_dbr:
if middle_contact & bypass_dbr:
middle_contact, previous_layer_is_dbr = structure_middle_contact(bypass_dbr = bypass_dbr,
grading_type = grading_type,
grading_width = grading_width,
......@@ -279,7 +179,7 @@ def structure_eam_vcsel(air = True,
# middle contact
if contact & (not bypass_dbr):
if middle_contact & (not bypass_dbr):
middle_contact, previous_layer_is_dbr = structure_middle_contact(bypass_dbr = bypass_dbr,
grading_type = grading_type,
grading_width = grading_width,
......@@ -312,6 +212,8 @@ def structure_eam_vcsel(air = True,
if vcsel_mqw:
linear_grading_low_to_high_al = structure_linear_grading(grading_width=90e-9,
period=40,
low_al = 0.21,
high_al = 0.6,
na=0.,
nd=0.,
v_ga11=v_ga11,
......@@ -360,7 +262,7 @@ def structure_eam_vcsel(air = True,
def structure_mqw(amount_qw = 3,
mean_al = 0.3,
l_clad = 5e-9,
l_clad = 15e-9,
l_cb = 10e-9,
l_qw = 8.5e-9,
v_ga6 = 100,
......@@ -398,17 +300,17 @@ def structure_mqw(amount_qw = 3,
# cladding
sl = sl.append(clad, ignore_index = True)
# confinement barrier
sl = sl.append(cb, ignore_index = True)
# mqw
for i in range(amount_qw):
for i in range(amount_qw -1):
# quantum well
sl = sl.append(quantum_well, ignore_index = True)
# confinement barrier
sl = sl.append(cb, ignore_index = True)
# quantum well
sl = sl.append(quantum_well, ignore_index = True)
#cladding
sl = sl.append(clad, ignore_index = True)
......
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