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
4d3ee0fa
Commit
4d3ee0fa
authored
Apr 26, 2021
by
Lucas Laplanche
Browse files
rien qui fonctionne comme d'hab
parent
75893edf
Changes
3
Hide whitespace changes
Inline
Side-by-side
calculation.py
View file @
4d3ee0fa
...
@@ -46,15 +46,16 @@ def zandberg_electromagnetic_amplitude(electric_field=0., wavelength=1e-6):
...
@@ -46,15 +46,16 @@ def zandberg_electromagnetic_amplitude(electric_field=0., wavelength=1e-6):
sl
=
st
.
structure_zandbergen
()
sl
=
st
.
structure_zandbergen
()
sl
=
op
.
algaas_super_lattice_refractive_index
(
sl
,
electric_field
,
wavelength
)
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
,
1e-9
)
em
=
op
.
em_amplitude_
t
mm
(
sl
,
wavelength
)
em
=
op
.
em_amplitude_
s
mm
(
sl
,
wavelength
)
sl
[
'electromagnetic_amplitude'
]
=
em
.
tolist
(
)
sl
.
insert
(
sl
.
shape
[
1
],
'electromagnetic_amplitude'
,
value
=
em
)
plt
.
plot_refra_em
(
sl
)
plt
.
plot_refra_em
(
sl
)
def
mqw_psi
(
lz
=
0.01e-9
,
electric_field
=
0.
,
wavelength
=
850e-9
):
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
)
sl
=
st
.
structure_eam
(
air
=
False
,
top_dbr
=
False
,
bot_dbr
=
False
,
shared_dbr
=
False
,
contact
=
False
,
substrate
=
False
,
amount_qw
=
5
)
sl
=
pt
.
cut_in_equal_layers_thickness
(
sl
,
1e-11
)
v_e
,
v_hh
,
eig_e
,
psi_e
,
eig_hh
,
psi_hh
=
qt
.
solve_schrodinger
(
sl
)
v_e
,
v_hh
,
eig_e
,
psi_e
,
eig_hh
,
psi_hh
=
qt
.
solve_schrodinger
(
sl
)
np
.
savez_compressed
(
'v_e'
,
v_e
)
np
.
savez_compressed
(
'v_e'
,
v_e
)
np
.
savez_compressed
(
'v_hh'
,
v_hh
)
np
.
savez_compressed
(
'v_hh'
,
v_hh
)
...
@@ -62,7 +63,7 @@ def mqw_psi(lz=0.01e-9, electric_field=0., wavelength=850e-9):
...
@@ -62,7 +63,7 @@ def mqw_psi(lz=0.01e-9, electric_field=0., wavelength=850e-9):
np
.
savez_compressed
(
'psi_e'
,
psi_e
[
0
,
:])
np
.
savez_compressed
(
'psi_e'
,
psi_e
[
0
,
:])
np
.
savez_compressed
(
'eig_hh'
,
eig_hh
)
np
.
savez_compressed
(
'eig_hh'
,
eig_hh
)
np
.
savez_compressed
(
'psi_hh'
,
psi_hh
[
0
,
:])
np
.
savez_compressed
(
'psi_hh'
,
psi_hh
[
0
,
:])
#
plt.plot_psi
(lz, v_e, psi_
e)
plt
.
plot_psie
(
)
def
benchmark_refractive_index
():
def
benchmark_refractive_index
():
...
...
optic.py
View file @
4d3ee0fa
...
@@ -411,7 +411,7 @@ def scattering_matrix_layer(vi, vg, xi):
...
@@ -411,7 +411,7 @@ def scattering_matrix_layer(vi, vg, xi):
return
s
return
s
def
redheffer_star_product
(
sa
,
sb
,
e
):
def
redheffer_star_product
(
sa
,
sb
):
ba
=
np
.
matmul
(
sb
[
0
,
0
],
sa
[
1
,
1
])
ba
=
np
.
matmul
(
sb
[
0
,
0
],
sa
[
1
,
1
])
ab
=
np
.
matmul
(
sa
[
1
,
1
],
sb
[
0
,
0
])
ab
=
np
.
matmul
(
sa
[
1
,
1
],
sb
[
0
,
0
])
...
@@ -426,11 +426,8 @@ def redheffer_star_product(sa, sb, e):
...
@@ -426,11 +426,8 @@ def redheffer_star_product(sa, sb, e):
sb
[
1
,
1
]
+
np
.
matmul
(
np
.
matmul
(
f
,
sa
[
1
,
1
]),
sb
[
0
,
1
])
sb
[
1
,
1
]
+
np
.
matmul
(
np
.
matmul
(
f
,
sa
[
1
,
1
]),
sb
[
0
,
1
])
]])
]])
amp
=
np
.
abs
(
sab
[
0
,
0
][
0
,
0
]
+
sab
[
1
,
1
][
0
,
0
])
**
2
e
=
np
.
append
(
e
,
amp
)
return
sab
return
sab
,
e
def
em_amplitude_smm
(
super_lattice
,
wavelength
):
def
em_amplitude_smm
(
super_lattice
,
wavelength
):
...
@@ -475,7 +472,13 @@ def em_amplitude_smm(super_lattice, wavelength):
...
@@ -475,7 +472,13 @@ def em_amplitude_smm(super_lattice, wavelength):
s_i
=
scattering_matrix_layer
(
v_i
,
v_global
,
x_i
)
s_i
=
scattering_matrix_layer
(
v_i
,
v_global
,
x_i
)
# update global scattering matrix
# update global scattering matrix
s_global
,
e
=
redheffer_star_product
(
s_global
,
s_i
,
e
)
s_global
=
redheffer_star_product
(
s_global
,
s_i
)
# calculate transmitted and reflected fields
e_ref
=
np
.
matmul
(
s_global
[
0
,
0
],
np
.
array
([
1.
,
0.
])
)
e_trm
=
np
.
matmul
(
s_global
[
1
,
0
],
np
.
array
([
1.
,
0.
])
)
amplitude
=
np
.
abs
(
e_ref
[
0
]
+
e_trm
[
0
])
**
2
e
=
np
.
append
(
e
,
amplitude
)
# compute reflection side scattering matrix
# compute reflection side scattering matrix
...
...
quantum.py
View file @
4d3ee0fa
...
@@ -40,8 +40,8 @@ def hamiltonian(sl, particle):
...
@@ -40,8 +40,8 @@ def hamiltonian(sl, particle):
m
=
mass
(
al
)
m
=
mass
(
al
)
a
=
-
HREV
**
2
/
(
2
*
m
*
lz
**
2
)
a
=
-
HREV
**
2
/
(
2
*
m
*
lz
**
2
)
b
=
HREV
**
2
/
(
m
*
lz
**
2
)
-
sl
.
at
[
i
,
barrier
]
b
=
HREV
**
2
/
(
m
*
lz
**
2
)
+
sl
.
at
[
i
,
barrier
]
c
=
a
c
=
a
h
[
i
+
1
,
i
]
=
a
h
[
i
+
1
,
i
]
=
a
...
@@ -63,12 +63,16 @@ def algaas_potential_barrier(al):
...
@@ -63,12 +63,16 @@ def algaas_potential_barrier(al):
valence_band_offset
=
0.33
# G.Ji, D.Huang, U.K.Reddy, H.Unlu, T.S.Henderson, and H.Morko9 1987
valence_band_offset
=
0.33
# G.Ji, D.Huang, U.K.Reddy, H.Unlu, T.S.Henderson, and H.Morko9 1987
conduction_band_offset
=
1.
-
valence_band_offset
conduction_band_offset
=
1.
-
valence_band_offset
eg_al_x
=
EG_GAAS
+
1.087
*
al
+
0.438
*
al
**
2
# http://www.ioffe.ru/SVA/NSM/Semicond/AlGaAs/bandstr.html
delta_eg
=
eg_al_x
-
EG_GAAS
if
al
<
0.45
:
delta_eg
=
1.247
*
al
else
:
delta_eg
=
1.9
-
EG_GAAS
+
0.125
*
al
+
0.143
*
al
**
2
v_hh
=
valence_band_offset
*
delta_eg
v_hh
=
valence_band_offset
*
delta_eg
v_e
=
conduction_band_offset
*
delta_eg
v_e
=
conduction_band_offset
*
delta_eg
return
v_e
,
v_hh
return
v_e
,
v_hh
...
@@ -92,16 +96,6 @@ def algaas_super_lattice_potential_barrier(sl):
...
@@ -92,16 +96,6 @@ def algaas_super_lattice_potential_barrier(sl):
def
last_bound_states_index
(
v
,
e
):
limit
=
np
.
max
(
v
)
for
i
in
range
(
e
.
shape
[
0
]):
if
e
[
i
]
>
limit
:
return
i
-
1
def
solve_schrodinger
(
sl
):
def
solve_schrodinger
(
sl
):
# compute the potential barrier array
# compute the potential barrier array
sl
=
algaas_super_lattice_potential_barrier
(
sl
)
sl
=
algaas_super_lattice_potential_barrier
(
sl
)
...
@@ -111,6 +105,7 @@ def solve_schrodinger(sl):
...
@@ -111,6 +105,7 @@ def solve_schrodinger(sl):
# solve the schrodinger equation
# solve the schrodinger equation
eig_e
,
psi_e
=
np
.
linalg
.
eig
(
h_e
)
eig_e
,
psi_e
=
np
.
linalg
.
eig
(
h_e
)
# delete the hamiltonian in order to free RAM
# delete the hamiltonian in order to free RAM
np
.
savez_compressed
(
'h_e'
,
h_e
)
del
h_e
del
h_e
# compute the hamiltonian for heavy holes
# compute the hamiltonian for heavy holes
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment