Skip to content
GitLab
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):
sl
=
st
.
structure_zandbergen
()
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_
t
mm
(
sl
,
wavelength
)
sl
[
'electromagnetic_amplitude'
]
=
em
.
tolist
(
)
em
=
op
.
em_amplitude_
s
mm
(
sl
,
wavelength
)
sl
.
insert
(
sl
.
shape
[
1
],
'electromagnetic_amplitude'
,
value
=
em
)
plt
.
plot_refra_em
(
sl
)
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
)
np
.
savez_compressed
(
'v_e'
,
v_e
)
np
.
savez_compressed
(
'v_hh'
,
v_hh
)
...
...
@@ -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
(
'eig_hh'
,
eig_hh
)
np
.
savez_compressed
(
'psi_hh'
,
psi_hh
[
0
,
:])
#
plt.plot_psi
(lz, v_e, psi_
e)
plt
.
plot_psie
(
)
def
benchmark_refractive_index
():
...
...
optic.py
View file @
4d3ee0fa
...
...
@@ -411,7 +411,7 @@ def scattering_matrix_layer(vi, vg, xi):
return
s
def
redheffer_star_product
(
sa
,
sb
,
e
):
def
redheffer_star_product
(
sa
,
sb
):
ba
=
np
.
matmul
(
sb
[
0
,
0
],
sa
[
1
,
1
])
ab
=
np
.
matmul
(
sa
[
1
,
1
],
sb
[
0
,
0
])
...
...
@@ -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
])
]])
amp
=
np
.
abs
(
sab
[
0
,
0
][
0
,
0
]
+
sab
[
1
,
1
][
0
,
0
])
**
2
e
=
np
.
append
(
e
,
amp
)
return
sab
,
e
return
sab
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
)
# 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
...
...
quantum.py
View file @
4d3ee0fa
...
...
@@ -40,8 +40,8 @@ def hamiltonian(sl, particle):
m
=
mass
(
al
)
a
=
-
HREV
**
2
/
(
2
*
m
*
lz
**
2
)
b
=
HREV
**
2
/
(
m
*
lz
**
2
)
-
sl
.
at
[
i
,
barrier
]
a
=
-
HREV
**
2
/
(
2
*
m
*
lz
**
2
)
b
=
HREV
**
2
/
(
m
*
lz
**
2
)
+
sl
.
at
[
i
,
barrier
]
c
=
a
h
[
i
+
1
,
i
]
=
a
...
...
@@ -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
conduction_band_offset
=
1.
-
valence_band_offset
eg_al_x
=
EG_GAAS
+
1.087
*
al
+
0.438
*
al
**
2
delta_eg
=
eg_al_x
-
EG_GAAS
# http://www.ioffe.ru/SVA/NSM/Semicond/AlGaAs/bandstr.html
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_e
=
conduction_band_offset
*
delta_eg
return
v_e
,
v_hh
...
...
@@ -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
):
# compute the potential barrier array
sl
=
algaas_super_lattice_potential_barrier
(
sl
)
...
...
@@ -111,6 +105,7 @@ def solve_schrodinger(sl):
# solve the schrodinger equation
eig_e
,
psi_e
=
np
.
linalg
.
eig
(
h_e
)
# delete the hamiltonian in order to free RAM
np
.
savez_compressed
(
'h_e'
,
h_e
)
del
h_e
# compute the hamiltonian for heavy holes
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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