Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Lucas Laplanche
EAM VCSEL
Commits
aac18c2a
Commit
aac18c2a
authored
Jul 01, 2021
by
Lucas Laplanche
Browse files
Merge remote-tracking branch 'origin/master'
parents
e7624564
44da8d0a
Changes
9
Hide whitespace changes
Inline
Side-by-side
calculation.py
View file @
aac18c2a
...
...
@@ -33,8 +33,6 @@ def refra(bypass_dbr=True, electric_field=0., wavelength=850e-9):
plt
.
plot_refra
(
sl
)
def
al_doping
(
bypass_dbr
=
True
):
sl
=
st
.
structure_eam_vcsel
(
eam_only
=
True
,
bypass_dbr
=
bypass_dbr
)
plt
.
plot_al_doping
(
sl
)
...
...
@@ -47,7 +45,7 @@ def reflectivity(bypass_dbr=True,
stop_wavelength
=
900e-9
,
electric_field
=
0.
,
n_points
=
100
,
l_eam_clad
=
8
e-9
,
l_eam_clad
=
10
e-9
,
l_vcsel_clad
=
15e-9
,
plot
=
True
):
wavelength
=
np
.
linspace
(
start_wavelength
,
stop_wavelength
,
num
=
n_points
)
...
...
@@ -73,29 +71,6 @@ def reflectivity(bypass_dbr=True,
return
r
def
dbr_reflectivity
(
start_wavelength
=
700e-9
,
stop_wavelength
=
1000e-9
,
electric_field
=
0.
,
n_points
=
100
,
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_dbr
(
period
=
20
,
grading_type
=
'linear slope'
)
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
]
=
tmm
.
reflection
(
n
,
d
,
wavelength
[
i
])
if
plot
:
plt
.
plot_reflectivity
(
wavelength
,
r
)
else
:
return
def
reflectivity_heatmap
(
bypass_dbr
=
True
,
...
...
@@ -199,16 +174,6 @@ def clad_coupling_electromagnetic_amplitude(bypass_dbr=False, electric_field=0.,
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
(
9.9e-9
,
10.1e-9
,
9
)
for
cl
in
cladding
:
sl
=
st
.
structure_eam_vcsel
(
bypass_dbr
=
bypass_dbr
,
vcsel_only
=
True
,
grading_type
=
'none'
,
mqw_alloy_type
=
'none'
,
l_vcsel_clad
=
cl
)
sl
=
op
.
algaas_super_lattice_refractive_index
(
sl
,
electric_field
,
wavelength
)
sl
=
pt
.
cut_in_equal_layers_thickness
(
sl
,
5e-9
)
em
=
tmm
.
em_amplitude_scattering_matrix
(
sl
,
wavelength
)
sl
.
insert
(
sl
.
shape
[
1
],
'electromagnetic_amplitude'
,
value
=
em
)
plt
.
plot_refra_em
(
sl
,
str
(
cl
))
def
zandberg_electromagnetic_amplitude
(
electric_field
=
0.
,
wavelength
=
1e-6
):
...
...
@@ -273,7 +238,7 @@ def ftir_theory_comparison_reflectivity(filename='eam_2', electric_field=0., doc
def
mqw_psi
(
lz
=
0.01e-9
):
sl
=
st
.
structure_eam_vcsel
(
eam_mqw_only
=
True
,
amount_eam_qw
=
5
)
sl
=
st
.
structure_eam_vcsel
(
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
)
...
...
epitaxy.py
View file @
aac18c2a
...
...
@@ -247,10 +247,6 @@ def reflectivity_heatmap(bypass_dbr=True,
v_ga11
=
850
,
v_al5
=
900
,
v_al12
=
150
):
# 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'
)
# create the wavelength array
wavelength
=
np
.
linspace
(
start_wavelength
,
stop_wavelength
,
num
=
n_wavelength
)
...
...
@@ -285,11 +281,13 @@ def reflectivity_heatmap(bypass_dbr=True,
for
i
in
tqdm
(
range
(
n_time
)):
sl_i
=
pdt
.
cut_sl_at_time
(
sl
,
time
[
i
])
sl_arrays_i
=
pdt
.
extract_arrays_from_super_lattice
(
sl_i
)
# wavelength in [m]
# wavelength must be a numpy array
for
j
in
range
(
len
(
wavelength
)):
n
,
d
=
op
.
algaas_super_lattice_refractive_index_opti
(
sl_arrays_i
,
wavelength
[
j
],
refra_data_550
,
temperature
=
550
+
273.15
)
sl_j
=
op
.
algaas_super_lattice_refractive_index
(
sl_i
,
electric_field
,
wavelength
[
j
],
temperature
=
550
+
273.15
,
lengyel
=
False
,
only_real
=
True
)
n
=
sl_j
[
'refractive_index'
].
to_numpy
(
dtype
=
np
.
complex128
)
d
=
sl_j
[
'thickness'
].
to_numpy
(
dtype
=
np
.
complex128
)
r
[
j
,
i
]
=
tmm
.
reflection
(
n
,
d
,
wavelength
[
j
])
...
...
globals.py
View file @
aac18c2a
...
...
@@ -5,8 +5,8 @@ import numpy as np
# physical constants
C
=
299792458.0
# speed of light [m/s]
Q
=
1.602176634e-19
#
E
lectron Charge [C] 1C = 1A*1s
M0
=
9.1095e-31
#
E
lectron rest mass [kg]
Q
=
1.602176634e-19
#
e
lectron Charge [C] 1C = 1A*1s
M0
=
9.1095e-31
#
e
lectron rest mass [kg]
HREV
=
6.582119569e-16
# Reduced Plank constant [eV.s]
HRJ
=
1.054571817e-34
# Reduced Plank constant [J.s]
HEV
=
4.135667696e-15
# Plank constant [eV.s]
...
...
@@ -27,6 +27,11 @@ NAL = 2.5702 # Al refractive index at 852.1nm
NALOX
=
1.6
# oxided Al refractive index
# 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'
)
# distributed Bragg Reflectors constants @ 850nm
L_15_AL_DBR
=
6.07310545767979e-08
L_90_AL_DBR
=
6.995041869479308e-08
...
...
macro.py
View file @
aac18c2a
...
...
@@ -35,6 +35,8 @@ def eam_heatmaps():
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
)
...
...
@@ -59,6 +61,8 @@ def reflectivity_eam_vcsel_clad_heatmap():
plt
.
plot_std_heatmap
(
l_eam_clad
,
l_vcsel_clad
,
r
)
def
structure_for_matlab
(
vcsel_only
=
False
,
bypass_dbr
=
False
,
wavelength
=
850.5e-9
):
l_eam_clad
=
5e-9
l_vcsel_clad
=
15e-9
...
...
@@ -70,5 +74,3 @@ def structure_for_matlab(vcsel_only=False, bypass_dbr=False, wavelength=850.5e-9
n
=
sl
[
'refractive_index'
].
apply
(
np
.
real
).
to_numpy
(
dtype
=
float
)
scipy
.
io
.
savemat
(
'eam_vcsel_n_lz.mat'
,
dict
(
n
=
n
,
lz
=
lz
))
optic.py
View file @
aac18c2a
import
numpy
as
np
from
globals
import
C
,
HEV
,
NALOX
,
N0
,
T
from
globals
import
C
,
HEV
,
NALOX
,
N0
,
REFRA_DATA_550
,
T
from
sqw_lengyel_absorption
import
gaas_sqw_absorption_at_wavelength
from
time
import
time
as
tm
def
algaas_super_lattice_refractive_index_opti
(
super_lattice_arrays
,
wavelength
,
refra_data_550
,
temperature
=
T
):
[
name_array
,
al_array
,
thickness_array
,
r_array
]
=
super_lattice_arrays
start
=
tm
()
for
i
in
range
(
al_array
.
shape
[
0
]):
name
=
name_array
[
i
]
al
=
al_array
[
i
]
if
'air'
in
name
:
r_array
[
i
]
=
N0
# layer is NOT a quantum well
else
:
# refractive index value
if
temperature
==
550
+
273.15
:
n
=
almuneau_complex_550C_algaas_refractive_index
(
refra_data_550
,
al
,
wavelength
,
temperature
=
temperature
)
else
:
n
=
afromovitz_varshni_real_algaas_refractive_index
(
al
,
wavelength
,
temperature
=
temperature
)
r_array
[
i
]
=
n
print
(
's = '
,
tm
()
-
start
)
return
r_array
,
thickness_array
def
algaas_super_lattice_refractive_index
(
super_lattice
,
electric_field
,
wavelength
,
temperature
=
T
,
lengyel
=
True
,
only_real
=
False
):
# wavelength in [m]
# temperature in [K]
# lengyel : activate the Lengyel model for the calculation of QW absorption
if
only_real
:
...
...
@@ -80,7 +51,7 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen
# qw thickness
thickness
=
super_lattice
.
at
[
i
,
'thickness'
]
if
lengyel
:
if
lengyel
:
k
=
gaas_sqw_absorption_at_wavelength
(
al
,
thickness
,
electric_field
,
wavelength
)
else
:
k
=
0.
...
...
@@ -126,88 +97,6 @@ def algaas_super_lattice_refractive_index(super_lattice, electric_field, wavelen
return
super_lattice
def
algaas_refractive_index
(
al
,
electric_field
,
wavelength
,
quantum_well
=
False
,
quantum_well_thickness
=
0.
,
confinement_barrier_al
=
0.
,
na
=
0.
,
nd
=
0.
):
# layer is a quantum well -> Lengyel model
if
quantum_well
:
# refractive index value
n
=
afromovitz_varshni_real_algaas_refractive_index
(
0.
,
wavelength
)
k
=
gaas_sqw_absorption_at_wavelength
(
confinement_barrier_al
,
quantum_well_thickness
,
electric_field
,
wavelength
)
k
=
-
100
*
k
*
wavelength
/
(
4
*
np
.
pi
)
n
+=
1j
*
k
# layer is NOT a quantum well
else
:
# refractive index value
n
=
afromovitz_varshni_real_algaas_refractive_index
(
al
,
wavelength
)
if
(
na
==
0.
)
&
(
na
==
nd
):
pass
# N doped
elif
nd
>
na
:
n
+=
-
1j
*
5e-18
*
nd
*
1e-4
*
wavelength
/
(
4
*
np
.
pi
)
# P doped
elif
na
>
nd
:
n
+=
-
1j
*
11.5e-18
*
na
*
1e-4
*
wavelength
/
(
4
*
np
.
pi
)
return
n
def
afromovitz_real_algaas_refractive_index
(
al
,
wavelength
):
# Refractive index of AlGaAs for all compositions
# as a function of temperature and for wavelengths
# below bandgap or slightly above bandgap (Afromovitz model)
# References:
# M.A.Afromovitz J.P.Kim et al, Optics Letters, V32 N5, p536(2007)
# al content [1]
# wavelength in [m]
# T [°C]
t
=
T
-
273.15
# [K] -> [°C]
wavelength
=
wavelength
/
1e-6
e0
=
3.65
+
0.871
*
al
+
0.179
*
al
**
2
# [eV]
ed
=
36.1
-
2.45
*
al
# [eV]
e_gamma
=
1.424
+
1.266
*
al
+
0.26
*
al
**
2
-
((
1
-
al
)
*
0.5405
+
al
*
0.885
)
*
1e-3
*
(
t
-
25
)
# [eV]
ef
=
np
.
sqrt
(
2
*
e0
**
2
-
e_gamma
**
2
)
# [eV]
eta
=
np
.
pi
*
ed
/
(
2
*
e0
**
3
*
(
e0
**
2
-
e_gamma
**
2
))
ma
=
eta
*
(
ef
**
4
-
e_gamma
**
4
)
/
(
2
*
np
.
pi
)
mb
=
eta
*
(
ef
**
2
-
e_gamma
**
2
)
/
np
.
pi
e
=
1.239852066
/
wavelength
# [eV]
e_gamma_p
=
e_gamma
-
0.025
k
=
0.35
if
e
>
e_gamma
:
n
=
np
.
sqrt
(
1
+
ma
+
mb
*
e_gamma_p
**
2
+
eta
*
e_gamma_p
**
4
*
np
.
log
((
ef
**
2
-
e_gamma_p
**
2
)
/
(
e_gamma
**
2
-
e_gamma_p
**
2
))
/
np
.
pi
)
+
k
*
(
e
-
e_gamma_p
)
else
:
n
=
np
.
sqrt
(
1
+
ma
+
mb
*
e
**
2
+
eta
*
e
**
4
*
np
.
log
((
ef
**
2
-
e
**
2
)
/
(
e_gamma
**
2
-
e
**
2
))
/
np
.
pi
)
n
=
n
*
(
1
+
((
1
-
al
)
*
0.5405
+
al
*
0.885
)
*
1e-3
*
(
t
-
25
)
/
(
4
*
e_gamma
))
return
n
def
afromovitz_simplified_real_algaas_refractive_index
(
al
,
wavelength
):
#e_g = 1.424 +1.266*al +0.26*al**2
#e_0 = 2.6 +3*e_g/4
e_0
=
3.65
+
0.871
*
al
+
0.179
*
al
**
2
e_d
=
36.1
-
2.45
*
al
e
=
HEV
*
C
/
wavelength
frac
=
e_0
*
e_d
/
(
e_0
**
2
-
e
**
2
)
n
=
np
.
sqrt
(
1
+
frac
)
return
n
def
afromovitz_varshni_real_algaas_refractive_index
(
al
,
wavelength
,
temperature
=
T
):
...
...
@@ -250,26 +139,27 @@ def afromovitz_varshni_real_algaas_refractive_index(al, wavelength, temperature=
return
n
def
almuneau_complex_550C_algaas_refractive_index
(
refra_data_550
,
al
,
wavelength
,
temperature
=
550
+
273.15
):
def
almuneau_complex_550C_algaas_refractive_index
(
al
,
wavelength
,
temperature
=
550
+
273.15
):
if
temperature
!=
550
+
273.15
:
print
(
'error : temperature out of range'
)
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'
])
if
'refra_data_550'
in
globals
()
:
pass
else
:
global
refra_data_550
refra_data_550
=
REFRA_DATA_550
return
n
+
1j
*
k
idx_al
=
find_nearest_index
(
al
,
refra_data_550
[
'al_array'
])
idx_wavelength
=
find_nearest_index
(
wavelength
,
refra_data_550
[
'wavelength_array'
])
def
ioffe_algaas_permittivity
(
al
,
high_frequency
=
True
):
if
high_frequency
:
mu
=
10.89
-
2.73
*
al
else
:
mu
=
12.90
-
2.84
*
al
n
=
refra_data_550
[
'n_array'
][
idx_wavelength
,
idx_al
]
k
=
refra_data_550
[
'k_array'
][
idx_wavelength
,
idx_al
]
return
mu
return
n
+
1j
*
k
...
...
@@ -308,57 +198,3 @@ def confinement_barrier_mean_al_content(super_lattice, i):
return
al
def
confinement_barrier_mean_al_content_array
(
name_array
,
al_array
,
thickness_array
,
i
):
name
=
name_array
[
i
+
1
]
al
=
0.
total_thickness
=
0.
while
'barrier'
in
name
:
al
+=
al_array
[
i
+
1
]
*
thickness_array
[
i
+
1
]
total_thickness
+=
thickness_array
[
i
+
1
]
i
+=
1
name
=
name_array
[
i
+
1
]
al
=
al
/
total_thickness
return
al
def
find_two_nearest_indices
(
value
,
array
):
# array must be a numpy array
idx0
=
(
np
.
abs
(
array
-
value
)).
argmin
()
if
idx0
==
0
:
idx1
=
1
elif
idx0
==
(
len
(
array
)
-
1
)
:
idx1
=
len
(
array
)
-
2
elif
np
.
abs
(
array
[
idx0
+
1
]
-
value
)
<
np
.
abs
(
array
[
idx0
-
1
]
-
value
)
:
idx1
=
idx0
+
1
else
:
idx1
=
idx0
-
1
return
idx0
,
idx1
def
barycenter
(
al
,
al_array
,
wavelength
,
wavelength_array
,
value_array
):
al_i0
,
al_i1
=
find_two_nearest_indices
(
al
,
al_array
)
wave_i0
,
wave_i1
=
find_two_nearest_indices
(
wavelength
,
wavelength_array
)
coeff_al_i0
=
np
.
abs
(
al
-
al_array
[
al_i1
])
/
np
.
abs
(
al_array
[
al_i0
]
-
al_array
[
al_i1
])
coeff_al_i1
=
np
.
abs
(
al
-
al_array
[
al_i0
])
/
np
.
abs
(
al_array
[
al_i0
]
-
al_array
[
al_i1
])
coeff_wave_i0
=
np
.
abs
(
wavelength
-
wavelength_array
[
wave_i1
])
/
np
.
abs
(
wavelength_array
[
wave_i0
]
-
wavelength_array
[
wave_i1
])
coeff_wave_i1
=
np
.
abs
(
wavelength
-
wavelength_array
[
wave_i0
])
/
np
.
abs
(
wavelength_array
[
wave_i0
]
-
wavelength_array
[
wave_i1
])
value
=
value_array
[
wave_i0
,
al_i0
]
*
coeff_al_i0
*
coeff_wave_i0
value
+=
value_array
[
wave_i0
,
al_i1
]
*
coeff_al_i1
*
coeff_wave_i0
value
+=
value_array
[
wave_i1
,
al_i0
]
*
coeff_al_i0
*
coeff_wave_i1
value
+=
value_array
[
wave_i1
,
al_i1
]
*
coeff_al_i1
*
coeff_wave_i1
value
/=
4
return
value
plan
View file @
aac18c2a
OBJECTIFS
Nettoyer le code de la structure python.
Traiter les courbes mesurées de la refléctivité temporelle.
Les comparer aux calculs théoriques.
Faire l'épitaxie.
Faire le fit du FTIR.
Vérifier les recettes avec Alexandre
Faire l'épitaxie.
ACCOMPLI
Nettoyer le code de la structure python.
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.
Corriger le tmm !!!!!!!!!
ECHOUÉ
FTIR.
Calcul carte de chaleur reflectivité
QUESTIONS
Calcul carte de chaleur reflectivité
\ No newline at end of file
structure_macro.py
View file @
aac18c2a
...
...
@@ -3,5 +3,141 @@ import super_lattice_structure as sls
def
structure_boolean_arg_dict
(
config
):
# boolean setup
# overwrite default config
if
'vcsel_only'
in
config
:
arg_dict
=
{
'vcsel_only'
:
True
,
'eam_only'
:
False
,
'air'
:
True
,
'top_contact'
:
False
,
'top_eam_dbr'
:
False
,
'eam_alox'
:
False
,
'eam_mqw'
:
False
,
'bypass_dbr'
:
False
,
'bot_eam_dbr'
:
False
,
'middle_contact'
:
True
,
'shared_dbr'
:
True
,
'vcsel_alox'
:
True
,
'vcsel_mqw'
:
True
,
'bot_vcsel_dbr'
:
True
,
'substrate'
:
True
}
elif
'eam_only'
in
config
:
arg_dict
=
{
'vcsel_only'
:
False
,
'eam_only'
:
True
,
'air'
:
True
,
'top_contact'
:
True
,
'top_eam_dbr'
:
True
,
'eam_alox'
:
False
,
'eam_mqw'
:
True
,
'bypass_dbr'
:
False
,
'bot_eam_dbr'
:
True
,
'middle_contact'
:
True
,
'shared_dbr'
:
True
,
'vcsel_alox'
:
False
,
'vcsel_mqw'
:
False
,
'bot_vcsel_dbr'
:
False
,
'substrate'
:
True
}
elif
'eam_mqw_only'
in
config
:
arg_dict
=
{
'vcsel_only'
:
False
,
'eam_only'
:
True
,
'air'
:
False
,
'top_contact'
:
False
,
'top_eam_dbr'
:
False
,
'eam_alox'
:
False
,
'eam_mqw'
:
True
,
'bypass_dbr'
:
False
,
'bot_eam_dbr'
:
False
,
'middle_contact'
:
False
,
'shared_dbr'
:
False
,
'vcsel_alox'
:
False
,
'vcsel_mqw'
:
False
,
'bot_vcsel_dbr'
:
False
,
'substrate'
:
False
}
else
:
arg_dict
=
{
'vcsel_only'
:
False
,
'eam_only'
:
False
,
'air'
:
True
,
'top_contact'
:
True
,
'top_eam_dbr'
:
True
,
'eam_alox'
:
True
,
'eam_mqw'
:
True
,
'bypass_dbr'
:
False
,
'bot_eam_dbr'
:
True
,
'middle_contact'
:
True
,
'shared_dbr'
:
True
,
'vcsel_alox'
:
True
,
'vcsel_mqw'
:
True
,
'bot_vcsel_dbr'
:
True
,
'substrate'
:
True
}
return
arg_dict
def
eam_classic
():
arg_dict
=
structure_boolean_arg_dict
(
'eam_only'
)
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
def
eam_bypass
():
arg_dict
=
structure_boolean_arg_dict
(
'eam_only'
)
arg_dict
[
'bypass_dbr'
]
=
True
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
def
eam_alox
():
return
sls
.
structure_eam_vcsel
(
eam_alox
=
True
,
bypass_dbr
=
True
,
eam_only
=
True
)
\ No newline at end of file
arg_dict
=
structure_boolean_arg_dict
(
'eam_only'
)
arg_dict
[
'eam_alox'
]
=
True
arg_dict
[
'bypass_dbr'
]
=
True
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
def
eam_vcsel_classic
():
arg_dict
=
structure_boolean_arg_dict
(
'eam_vcsel'
)
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
def
eam_vcsel_bypass
():
arg_dict
=
structure_boolean_arg_dict
(
'eam_vcsel'
)
arg_dict
[
'bypass_dbr'
]
=
True
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
def
eam_vcsel_alox
():
arg_dict
=
structure_boolean_arg_dict
(
'eam_vcsel'
)
arg_dict
[
'eam_alox'
]
=
True
arg_dict
[
'bypass_dbr'
]
=
True
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
def
vcsel
():
arg_dict
=
structure_boolean_arg_dict
(
'vcsel_only'
)
return
sls
.
structure_eam_vcsel
(
**
arg_dict
)
\ No newline at end of file
super_lattice_structure.py
View file @
aac18c2a
...
...
@@ -10,14 +10,13 @@ import optic as op
def
structure_eam_vcsel
(
vcsel_only
=
False
,
eam_only
=
False
,
eam_mqw_only
=
False
,
air
=
True
,
top_contact
=
True
,
top_eam_dbr
=
True
,
eam_alox
=
False
,
eam_mqw
=
True
,
bypass_dbr
=
Tru
e
,
bypass_dbr
=
Fals
e
,
bot_eam_dbr
=
True
,
middle_contact
=
True
,
shared_dbr
=
True
,
...
...
@@ -56,47 +55,6 @@ def structure_eam_vcsel(vcsel_only = False,
# speeds are in [nm/h]
# prioritary boolean setup
# overwrite default config
if
vcsel_only
:
air
=
True
top_contact
=
False
top_eam_dbr
=
False
eam_alox
=
False
eam_mqw
=
False
bypass_dbr
=
False
bot_eam_dbr
=
False
middle_contact
=
True
shared_dbr
=
True
vcsel_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
vcsel_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_alox
=
False
eam_mqw
=
True
bot_eam_dbr
=
False
middle_contact
=
False
shared_dbr
=
False
vcsel_alox
=
False
vcsel_mqw
=
False
bot_vcsel_dbr
=
False
substrate
=
False