Commit 76db0a0e authored by Lucas Laplanche's avatar Lucas Laplanche
Browse files

ajout graphe em amp vcsel

parent d83a2278
......@@ -72,13 +72,28 @@ def electromagnetic_amplitude(bypass_dbr=True, electric_field=0., wavelength=850
plt.plot_refra_em(sl)
def cladding_electromagnetic_amplitude(bypass_dbr=True, electric_field=0., wavelength=850e-9):
sl = st.structure_eam_vcsel(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)
sl.insert(sl.shape[1], 'electromagnetic_amplitude', value=em)
plt.plot_refra_em(sl)
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=1e-9)
sl2 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=3e-9)
sl3 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=10e-9)
sl1 = op.algaas_super_lattice_refractive_index(sl1, electric_field, wavelength)
sl2 = op.algaas_super_lattice_refractive_index(sl2, electric_field, wavelength)
sl3 = op.algaas_super_lattice_refractive_index(sl3, electric_field, wavelength)
sl1 = pt.cut_in_equal_layers_thickness(sl1, 1e-9)
sl2 = pt.cut_in_equal_layers_thickness(sl2, 1e-9)
sl3 = pt.cut_in_equal_layers_thickness(sl3, 1e-9)
em1 = op.em_amplitude_smm(sl1, wavelength)
em2 = op.em_amplitude_smm(sl2, wavelength)
em3 = op.em_amplitude_smm(sl3, wavelength)
sl1.insert(sl1.shape[1], 'electromagnetic_amplitude', value=em1)
sl2.insert(sl2.shape[1], 'electromagnetic_amplitude', value=em2)
sl3.insert(sl3.shape[1], 'electromagnetic_amplitude', value=em3)
plt.plot_refra_clad_coupling_em(sl1, sl2, sl3)
def zandberg_electromagnetic_amplitude(electric_field=0., wavelength=1e-6):
......
OBJECTIFS
Faire la structure en python. (reste les claddings du vcsel)
Calculer pour plusieurs épaisseurs de cladding ( cladding du vcsel? dj7?) l'amplitude du champ électromagnétique et comparer avec la publication de Krassimir.
Présenter à Ghuillem et CHristophe le résultat.
Présenter à Ghuillem et Christophe le résultat.
Traiter les courbes mesurées de la refléctivité temporelle.
Les comparer aux calculs théoriques.
Calculer la réflectivité temporelle des deux structures totales.
......@@ -20,8 +20,8 @@ ACCOMPLI
QUESTIONS
Concernant le couplage vcsel et modulateur, est-ce que seul le cladding des puits quantiques (du vcsel et/ou du modulateur) on une influence?
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 on 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%)?
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... ?
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.
......
......@@ -275,6 +275,66 @@ def plot_refra_em(sl):
fig.show()
def plot_refra_clad_coupling_em(sl1, sl2, sl3):
# remove the substrate layer
sl1 = sl1.drop(sl1.shape[0] -1, axis=0)
sl2 = sl2.drop(sl2.shape[0] - 1, axis=0)
sl3 = sl3.drop(sl3.shape[0] - 1, axis=0)
# check wether the depth column exist
if not 'depth' in sl1:
sl1.insert(sl1.shape[1], 'depth', value=np.nan)
sl2.insert(sl2.shape[1], 'depth', value=np.nan)
sl3.insert(sl3.shape[1], 'depth', value=np.nan)
# calculate the depth of every layer
for i in range(sl1.shape[0]):
sl1.at[i, 'depth'] = sl1.loc[0:i, 'thickness'].sum()
sl2.at[i, 'depth'] = sl2.loc[0:i, 'thickness'].sum()
sl3.at[i, 'depth'] = sl3.loc[0:i, 'thickness'].sum()
# create a figure
fig = make_subplots(rows=2, cols=2,)
# add the traces
fig.add_trace(go.Scatter(
x=sl1['depth'],
y=sl1['refractive_index'].apply(np.real),
name='refractive index'
),row=1, col=1)
fig.add_trace(go.Scatter(
x=sl1['depth'],
y=sl1['electromagnetic_amplitude'],
name='em amplitude1',
),row=2, col=1)
fig.add_trace(go.Scatter(
x=sl2['depth'],
y=sl2['electromagnetic_amplitude'],
name='em amplitude2',
),row=1, col=2)
fig.add_trace(go.Scatter(
x=sl3['depth'],
y=sl3['electromagnetic_amplitude'],
name='em amplitude3',
),row=2, col=2)
# update layout properties
fig.update_layout(
title_text='refractive index and electromagnetic amplitude along z axis',
width=1600,
)
# show the figure
fig.show()
def plot_reflectivity(wavelength, r):
......
......@@ -294,7 +294,7 @@ def structure_eam_vcsel(air = True,
grading = grading_type,
grading_width = grading_width,
grading_period = grading_period,
next_structure_is_vcsel_cladding = True,
next_structure_is_contact = True,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al5 = v_al5,
......@@ -701,8 +701,7 @@ def structure_alox(period = 10,
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
sl = sl.append(pd.DataFrame([['AlOx 90% Al',
true_epitaxy_thickness(end_thickness, v_al5 + v_ga6, al5=True, ga6=True), al_90, 2e18, 0., True, False, True, False]],
sl = sl.append(pd.DataFrame([['AlOx 90% Al',true_epitaxy_thickness(end_thickness, v_al5 + v_ga6, al5=True, ga6=True), al_90, 2e18, 0., True, False, True, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
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