Commit 2c5e8acc authored by Lucas Laplanche's avatar Lucas Laplanche
Browse files

maj

parent b0d6cd9a
import numpy as np
import pandas as pd
from scipy.interpolate import splrep, splev
from tqdm import tqdm
......@@ -22,6 +23,31 @@ def refra_doping(bypass_dbr=True, electric_field=0., wavelength=850e-9):
plt.plot_refra_doping(sl)
def dbr_refra_doping(electric_field=0., wavelength=850e-9):
sl = pd.DataFrame(columns = ['name', 'thickness', 'al', 'na', 'nd', 'refractive_index', 'ga6', 'ga11', 'al5', 'al12'])
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)
l_dbr_low_al = 850e-9 / (4 * op.algaas_refractive_index(0.15, 0., 850e-9))
l_dbr_high_al = 850e-9 / (4 * op.algaas_refractive_index(0.9, 0., 850e-9))
sl = sl.append(st.structure_dbr(period=20,
grading_type='linear slope',
l_dbr_low_al=l_dbr_low_al,
l_dbr_high_al=l_dbr_high_al))
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)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, 850e-9, lengyel=True)
plt.plot_refra_doping(sl)
def al_doping(bypass_dbr=True):
sl = st.structure_eam_vcsel(eam_only=True, bypass_dbr=bypass_dbr)
plt.plot_al_doping(sl)
......@@ -30,23 +56,69 @@ def al_doping(bypass_dbr=True):
def reflectivity(vcsel_only=False,
eam_only=True,
eam_only=False,
bypass_dbr=False,
start_wavelength=820e-9,
stop_wavelength=880e-9,
start_wavelength=845e-9,
stop_wavelength=855e-9,
electric_field=0.,
n_points=50,
l_eam_clad=15.5e-9,
l_vcsel_clad=8.5e-9,
plot=True):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
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_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 = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], lengyel=True)
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
d = sl['thickness'].to_numpy(dtype=float)
r[i] = op.reflection(n, d, wavelength[i])
if plot:
plt.plot_reflectivity(wavelength, r)
else:
return
def dbr_reflectivity(start_wavelength=700e-9,
stop_wavelength=1000e-9,
electric_field=0.,
n_points=100,
l_eam_clad = 13e-9,
l_vcsel_clad=32e-9):
plot=True):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
r = op.reflectivity(bypass_dbr,
electric_field,
wavelength,
vcsel_only=vcsel_only,
eam_only=eam_only,
l_eam_clad=l_eam_clad,
l_vcsel_clad=l_vcsel_clad)
plt.plot_reflectivity(wavelength, r)
r = np.zeros(len(wavelength))
# wavelength in [m]
# wavelength must be a numpy array
for i in tqdm(range(len(wavelength))):
l_dbr_low_al = 850e-9 / ( 4 * op.algaas_refractive_index(0.15, 0., 850e-9) )
l_dbr_high_al = 850e-9 / ( 4 * op.algaas_refractive_index(0.9, 0., 850e-9) )
sl = st.structure_dbr(period=20,
grading_type = 'linear slope',
l_dbr_low_al = l_dbr_low_al,
l_dbr_high_al = l_dbr_high_al)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], lengyel=True)
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
d = sl['thickness'].to_numpy(dtype=float)
r[i] = op.reflection(n, d, wavelength[i])
if plot:
plt.plot_reflectivity(wavelength, r)
else:
return
def reflectivity_heatmap(bypass_dbr=True,
......@@ -78,24 +150,24 @@ def reflectivity_heatmap(bypass_dbr=True,
def electromagnetic_amplitude(bypass_dbr=False, electric_field=0., wavelength=850.2e-9):
sl = st.structure_eam_vcsel(eam_only=False, vcsel_only=True, bypass_dbr=bypass_dbr)
def electromagnetic_amplitude(bypass_dbr=False, electric_field=0., wavelength=850e-9):
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=True, grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad = 15e-9, l_vcsel_clad=15e-9)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength)
sl = pt.cut_in_equal_layers_thickness(sl, 1e-9)
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)
def vcsel_electromagnetic_resonnance(electric_field=0.,
start_wavelength=820e-9,
stop_wavelength=880e-9,
n_points=300):
start_wavelength=845e-9,
stop_wavelength=855e-9,
n_points=100):
wavelength = np.linspace(start_wavelength, stop_wavelength, num=n_points)
max_em_amp = np.zeros(n_points)
for i in tqdm(range(len(wavelength))):
sl = st.structure_eam_vcsel(vcsel_only=True)
sl = st.structure_eam_vcsel(grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad = 15.5e-9, l_vcsel_clad=8.5e-9)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i], lengyel=False)
sl['refractive_index'] = sl['refractive_index'].apply(np.real).astype(float)
sl = pt.cut_in_equal_layers_thickness(sl, 1e-8)
......@@ -110,9 +182,9 @@ def vcsel_electromagnetic_resonnance(electric_field=0.,
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=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 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad = 1e-9, l_vcsel_clad=8.5e-9)
sl2 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad = 5e-9, l_vcsel_clad=8.5e-9)
sl3 = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad = 10e-9, l_vcsel_clad=8.5e-9)
sl1 = op.algaas_super_lattice_refractive_index(sl1, electric_field, wavelength)
sl2 = op.algaas_super_lattice_refractive_index(sl2, electric_field, wavelength)
......@@ -123,7 +195,7 @@ def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0.,
sl3 = pt.cut_in_equal_layers_thickness(sl3, 1e-8)
#sl1 = sl1[::-1].reset_index(drop=True)
sl2 = sl2[::-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)
......@@ -135,17 +207,17 @@ def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0.,
sl3.insert(sl3.shape[1], 'electromagnetic_amplitude', value=em3)
#sl1 = sl1[::-1].reset_index(drop=True)
sl2 = sl2[::-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(1e-9, 50e-9, 10)
cladding = np.linspace(1e-9, 50e-9, 20)
for cl in cladding:
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, l_eam_clad=cl, amount_eam_qw=25)
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr, vcsel_only=True, grading_type='linear slope', mqw_alloy_type='mean', l_eam_clad=15e-9, amount_eam_qw=25, l_vcsel_clad=cl)
sl = op.algaas_super_lattice_refractive_index(sl, electric_field, wavelength)
sl = pt.cut_in_equal_layers_thickness(sl, 1e-8)
em = op.em_amplitude_smm(sl, wavelength)
......
import numpy as np
from tqdm import tqdm
import calculation as cl
import optic as op
import plot as plt
import super_lattice_structure as st
......@@ -11,4 +18,28 @@ def eams_heatmaps():
cl.reflectivity_heatmap(bypass_dbr=True,
n_wavelength=1080,
n_time=1920,
r_file_name='heatmap_r_eam_2')
\ No newline at end of file
r_file_name='heatmap_r_eam_2')
def reflectivity_eam_vcsel_clad_heatmap():
n_pts = 30
l_eam_clad =np.linspace(15, 20, num=n_pts)
l_vcsel_clad =np.linspace(7, 11, num=n_pts)
r = np.zeros([n_pts, n_pts])
for i in tqdm(range(n_pts)):
for j in range(n_pts):
# wavelength in [m]
# wavelength must be a numpy array
sl = st.structure_eam_vcsel(l_eam_clad=l_eam_clad[i],
l_vcsel_clad=l_vcsel_clad[j],
grading_type='linear slope',
mqw_alloy_type='mean')
sl = op.algaas_super_lattice_refractive_index(sl, 0., 850e-9, lengyel=True)
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
d = sl['thickness'].to_numpy(dtype=float)
r[j, i] = op.reflection(n, d, 850e-9)
plt.plot_std_heatmap(l_eam_clad, l_vcsel_clad, r)
\ No newline at end of file
......@@ -179,17 +179,13 @@ def absorption(n, d, wavelength):
def reflectivity(bypass_dbr,
electric_field,
wavelength,
vcsel_only = False,
eam_only = True,
l_eam_clad=13e-9,
l_vcsel_clad = 32e-9):
wavelength):
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_vcsel(vcsel_only=vcsel_only, eam_only=eam_only, bypass_dbr=bypass_dbr, l_eam_clad=l_eam_clad, l_vcsel_clad=l_vcsel_clad)
sl = st.structure_eam_vcsel(bypass_dbr=bypass_dbr)
sl = algaas_super_lattice_refractive_index(sl, electric_field, wavelength[i])
n = sl['refractive_index'].to_numpy(dtype=np.complex128)
......
......@@ -485,6 +485,15 @@ def plot_mult_reflectivity(wavelength, r1, wavelength2, r2):
fig.show()
def plot_std_heatmap(x, y, r):
fig = go.Figure(data=
go.Heatmap(x=x, y=y, z=r, colorscale='jet'))
# show the figure
fig.show()
def plot_reflectivity_heatmap(time, wavelength, r):
fig = go.Figure(data=
go.Heatmap(x=time, y=wavelength, z=r, colorscale='jet'))
......
......@@ -41,7 +41,8 @@ def structure_eam_vcsel(vcsel_only = False,
shared_dbr_period = 12,
bot_vcsel_period = 35,
grading_type = 'linear',
mqw_alloy_type = 'digital',
grading_type = 'linear digital',
grading_width = 20e-9,
grading_period = 10,
......@@ -116,7 +117,7 @@ def structure_eam_vcsel(vcsel_only = False,
if top_eam_dbr:
dbr = structure_dbr(period = top_eam_dbr_period,
nd = 2e18,
grading = grading_type,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period,
previous_structure_is_top_contact = True,
......@@ -131,6 +132,7 @@ def structure_eam_vcsel(vcsel_only = False,
# eam mqw
if eam_mqw:
mqw = structure_mqw(name = 'eam',
mqw_alloy_type = mqw_alloy_type,
amount_qw = amount_eam_qw,
mean_al = eam_mean_al,
l_qw = l_eam_qw,
......@@ -143,19 +145,19 @@ def structure_eam_vcsel(vcsel_only = False,
# middle contact
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,
grading_period = grading_period)
sl = sl.append(middle_contact, ignore_index=True)
if middle_contact and bypass_dbr:
mid_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(mid_contact, ignore_index=True)
# bottom distributed Bragg reflector
if bot_eam_dbr & (not bypass_dbr):
if bot_eam_dbr and (not bypass_dbr):
dbr = structure_dbr(period = bot_eam_dbr_period,
na = 2e18,
grading = grading_type,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period,
previous_structure_is_cladding = True,
......@@ -165,10 +167,10 @@ def structure_eam_vcsel(vcsel_only = False,
v_al5 = v_al5,
v_al12 = v_al12)
sl = sl.append(dbr, ignore_index=True)
elif bot_eam_dbr & bypass_dbr:
elif bot_eam_dbr and bypass_dbr:
dbr = structure_dbr(period = bot_eam_dbr_period,
na = 2e18,
grading = grading_type,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period,
next_structure_is_dbr = True,
......@@ -180,28 +182,41 @@ def structure_eam_vcsel(vcsel_only = False,
# middle contact
if middle_contact & (not bypass_dbr):
middle_contact, previous_layer_is_dbr = structure_middle_contact(bypass_dbr = bypass_dbr,
vcsel_only = vcsel_only,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period)
sl = sl.append(middle_contact, ignore_index=True)
if middle_contact and (not bypass_dbr):
mid_contact, previous_layer_is_dbr = structure_middle_contact(bypass_dbr = bypass_dbr,
vcsel_only = vcsel_only,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period)
sl = sl.append(mid_contact, ignore_index=True)
# shared 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,
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)
if alox:
dbr = structure_dbr(period = shared_dbr_period,
na = 2e18,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period,
next_structure_is_alox = True,
v_ga6 = v_ga6,
v_ga11 = v_ga11,
v_al5 = v_al5,
v_al12 = v_al12)
sl = sl.append(dbr, ignore_index=True)
else:
dbr = structure_dbr(period = shared_dbr_period,
na = 2e18,
grading_type = grading_type,
grading_width = grading_width,
grading_period = grading_period,
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)
# aluminium oxide aperture
......@@ -212,9 +227,10 @@ def structure_eam_vcsel(vcsel_only = False,
# vcsel mqw
if vcsel_mqw:
linear_grading_low_to_high_al = structure_linear_grading(grading_width=90e-9,
linear_grading_low_to_high_al = structure_linear_grading(grading_type=grading_type,
grading_width=90e-9,
period=40,
low_al = 0.21,
low_al = 0.3,
high_al = 0.6,
na=0.,
nd=0.,
......@@ -222,6 +238,7 @@ def structure_eam_vcsel(vcsel_only = False,
v_al5=v_al5)
linear_grading_high_to_low_al = linear_grading_low_to_high_al[::-1].copy()
mqw = structure_mqw(name = 'vcsel',
mqw_alloy_type = mqw_alloy_type,
amount_qw = amount_vcsel_qw,
mean_al = vcsel_mean_al,
l_qw = l_vcsel_qw,
......@@ -240,7 +257,7 @@ def structure_eam_vcsel(vcsel_only = False,
dbr = structure_dbr(period=bot_vcsel_period,
na=0.,
nd=2e18,
grading=grading_type,
grading_type=grading_type,
grading_width=grading_width,
grading_period=grading_period,
previous_structure_is_vcsel_cladding=True,
......@@ -263,7 +280,12 @@ def structure_eam_vcsel(vcsel_only = False,
def structure_mqw(name = 'vcsel',
mqw_alloy_type = 'digital',
amount_qw = 3,
mean_al = 0.3,
l_clad = 15e-9,
......@@ -280,20 +302,30 @@ def structure_mqw(name = 'vcsel',
sl = pd.DataFrame(columns = ['name', 'thickness', 'al', 'na', 'nd', 'refractive_index', 'ga6', 'ga11', 'al5', 'al12'])
# layers definitions
# cladding
clad = structure_standard_digital_alloy_15_60_hlh(l_clad,
mean_al=mean_al,
layer_name=name +' cladding',
v_ga6=v_ga6,
v_ga11=v_ga11,
v_al12=v_al12)
# confinement barrier
cb = structure_standard_digital_alloy_15_60_hlh(l_cb,
mean_al=mean_al,
layer_name=name +' confinement barrier',
v_ga6=v_ga6,
v_ga11=v_ga11,
v_al12=v_al12)
if 'digital' in mqw_alloy_type:
# cladding
clad = structure_standard_digital_alloy_15_60_hlh(l_clad,
mean_al=mean_al,
layer_name=name +' cladding',
v_ga6=v_ga6,
v_ga11=v_ga11,
v_al12=v_al12)
# confinement barrier
cb = structure_standard_digital_alloy_15_60_hlh(l_cb,
mean_al=mean_al,
layer_name=name +' confinement barrier',
v_ga6=v_ga6,
v_ga11=v_ga11,
v_al12=v_al12)
else:
# cladding
clad = pd.DataFrame([[name +' cladding', l_clad, mean_al, 0., 0., False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12'])
# confinement barrier
cb = pd.DataFrame([[name +' confinement barrier', l_cb, mean_al, 0., 0., False, False, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12'])
# quantum well
l_qw = true_epitaxy_thickness(l_qw, v_ga6, ga6=True)
quantum_well = pd.DataFrame([[name +' quantum well', l_qw, 0., 0., 0., True, False, False, False]],
......@@ -327,7 +359,7 @@ def structure_mqw(name = 'vcsel',
def structure_dbr(period = 6,
na = 0.,
nd = 0.,
grading = 'none',
grading_type= 'none',
grading_width = 20e-9,
grading_period = 10,
previous_structure_is_cladding = False,
......@@ -337,6 +369,7 @@ def structure_dbr(period = 6,
next_structure_is_vcsel_cladding = False,
next_structure_is_contact = False,
next_structure_is_dbr = False,
next_structure_is_alox = False,
l_dbr_low_al = 61.3e-9,
l_dbr_high_al = 69.1e-9,
v_ga6 = 100,
......@@ -368,7 +401,8 @@ def structure_dbr(period = 6,
l_dbr_high_al = true_epitaxy_thickness(l_dbr_high_al, v_al5 +v_ga6, ga6=True, al5=True)
# grading definition
linear_grading_low_to_high_al = structure_linear_grading(grading_width = grading_width,
linear_grading_low_to_high_al = structure_linear_grading(grading_type = grading_type,
grading_width = grading_width,
period = grading_period,
na = na,
nd = nd,
......@@ -379,7 +413,7 @@ def structure_dbr(period = 6,
grading_width = linear_grading_low_to_high_al['thickness'].sum()
# dbr layers
if grading == 'linear':
if 'linear' in grading_type:
low_al_layer = pd.DataFrame([['dbr ' + doping_type + ' low Al ~ 15%', l_dbr_low_al -grading_width, low_al, na, nd, False, True, False, True]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12'])
high_al_layer = pd.DataFrame([['dbr ' + doping_type + ' high Al ~ 90%', l_dbr_high_al -grading_width, high_al, na, nd, True, False, True, False]],
......@@ -399,7 +433,7 @@ def structure_dbr(period = 6,
# dbr
if grading == 'linear':
if 'linear' in grading_type:
# beginning
if previous_structure_is_top_contact:
sl = sl.append(linear_grading_low_to_high_al, ignore_index=True)
......@@ -436,6 +470,8 @@ def structure_dbr(period = 6,
sl = sl.append(low_al_layer, ignore_index=True)
elif next_structure_is_vcsel_cladding:
sl = sl.append(high_al_layer, ignore_index=True)
elif next_structure_is_alox:
pass
else:
sl = sl.append(high_al_three_half_grading, ignore_index=True)
sl = sl.append(linear_grading_high_to_low_al, ignore_index=True)
......@@ -453,7 +489,8 @@ def structure_dbr(period = 6,
def structure_linear_grading(grading_width = 20e-9,
def structure_linear_grading(grading_type = 'linear digital',
grading_width = 20e-9,
period = 10,
low_al = 0.,
high_al = 1.,
......@@ -479,19 +516,37 @@ def structure_linear_grading(grading_width = 20e-9,
# grading
for i in range(period):
layer_al_content = low_al +((i +1) * (high_al -low_al) / (period +1)) # [1]
bi_layer_thickness = grading_width / period # [m]
if 'linear digital' in grading_type:
for i in range(period):
layer_al_content = low_al +((i +1) * (high_al -low_al) / (period +1)) # [1]
bi_layer_thickness = grading_width / period # [m]
al_thickness = layer_al_content * bi_layer_thickness # [m]
ga_thickness = (1 -layer_al_content) * bi_layer_thickness # [m]
al_thickness = layer_al_content * bi_layer_thickness # [m]
ga_thickness = (1 -layer_al_content) * bi_layer_thickness # [m]
sl = sl.append(pd.DataFrame([['dbr ' +doping_type +' linear grading', true_epitaxy_thickness(al_thickness, v_al5, al5=True), 1., na, nd, False, False, True, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
sl = sl.append(pd.DataFrame([['dbr ' +doping_type +' linear grading', true_epitaxy_thickness(ga_thickness, v_ga11, ga11=True), 0., na, nd, False, True, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
sl = sl.append(pd.DataFrame([['dbr ' +doping_type +' linear digital grading', true_epitaxy_thickness(al_thickness, v_al5, al5=True), 1., na, nd, False, False, True, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
sl = sl.append(pd.DataFrame([['dbr ' +doping_type +' linear digital grading', true_epitaxy_thickness(ga_thickness, v_ga11, ga11=True), 0., na, nd, False, True, False, False]],
columns=['name', 'thickness', 'al', 'na', 'nd', 'ga6', 'ga11', 'al5', 'al12']),
ignore_index=True)
elif 'linear slope' in grading_type:
# case this is a dbr grading
# al content are modified to be a mean
if low_al == 0. and high_al == 1.:
low_al = 0.15 # [1]
high_al = 0.9 # [1]
layer_thickness = grading_width / period # [m]
for i in range(period):
al_content = low_al +((i +1) * (high_al -low_al) / (period +1)) # [1]
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)
else:
print('ERROR, no correct grading type selected.')
return sl
......@@ -499,7 +554,7 @@ def structure_linear_grading(grading_width = 20e-9,
def structure_middle_contact(bypass_dbr = False,
vcsel_only = False,
grading_type = 'linear',
grading_type = 'linear digital',
grading_width = 20e-9,
grading_period = 10, </