Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a51e165

Browse files
committed
can create different mirrors
from file or from data
1 parent d4c330a commit a51e165

File tree

3 files changed

+39
-21
lines changed

3 files changed

+39
-21
lines changed

‎.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
*.xml
3+
*.iml

‎dbr.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,54 @@
44

55

66
class DBRMirror:
7-
def __init__(self, ni, nbr): # ni - refractive indices as array, nbr - number of layers (must be even!)
8-
if nbr % 2 != 0: print("Number must be even! Program will give wrong results")
9-
self.nbr = nbr
10-
self.n = array(concatenate(([1], tile(ni, (self.nbr-2)//2), [ni[0]])))
7+
def __init__(self, data):
8+
if isinstance (data, str):
9+
data = loadtxt(data)
10+
self.n = data[:, 0]
11+
self.d = data[:, 1]
1112

12-
def reflection_coeff(self, incidentwavelength, braggwavelength):
13+
14+
def reflection_coeff(self, incidentwavelength):
1315
nm = (self.n[:-1] / self.n[1:])
1416
R = array([])
15-
for value in braggwavelength:
16-
d = array(concatenate(([0], 0.25 * value/self.n[1:-1], [0])))
17-
phi = 2j*pi*self.n[:-1]*d[:-1]/incidentwavelength
17+
for wavelength in incidentwavelength:
18+
phi = 2j*pi*self.n[:-1]*self.d[:-1]/wavelength
1819
transition_matrix = array([[0.5*(1+nm)*exp(-phi), 0.5*(1-nm)*exp(phi)],
1920
[0.5*(1-nm)*exp(-phi), 0.5*(1+nm)*exp(phi)]])
2021

2122
general_transition_matrix = 1
22-
for k in range(self.nbr - 2,-1,-1):
23+
for k in range(self.n.size - 2,-1,-1):
2324
general_transition_matrix = dot(general_transition_matrix, transition_matrix[:, :, k])
2425

25-
# print(general_transition_matrix)
2626
r = - general_transition_matrix.item(2) / general_transition_matrix.item(3)
2727
R = append(R, abs(r)**2)
2828

29-
# t = linalg.det(general_transition_matrix) / general_transition_matrix.item(3)
30-
# T = n.item(N-1)/n.item(0) * abs(t)**2
31-
#
32-
# print(R)
33-
# print(T)
34-
# print(R+T)
3529
return R
3630

3731

3832
start = timeit.default_timer()
39-
wave_length = 0.98 * 10 ** (-6)
40-
NewMirror = DBRMirror([3.0, 3.5], 42)
41-
braggwavelength = array(linspace(0.68,1.28,100000)*10**(-6))
42-
R = NewMirror.reflection_coeff(wave_length,braggwavelength)
33+
34+
data = np.array([
35+
[1.0, 0],
36+
[3.5, 74.0],
37+
[3.0, 92.5],
38+
[3.5, 74.0],
39+
[3.0, 92.5],
40+
[3.5, 74.0],
41+
[3.0, 92.5],
42+
[3.5, 0]
43+
])
44+
45+
NewMirror = DBRMirror(data)
46+
47+
wavelength = array(linspace(600,2000,100000))
48+
49+
R = NewMirror.reflection_coeff(wavelength)
4350

4451
stop = timeit.default_timer()
4552
print(stop - start)
4653

47-
plot(braggwavelength, R)
54+
plot(wavelength, R)
4855
xlabel("$\lambda$")
4956
ylabel("R")
5057
show()

‎dbr.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
1.0 0
2+
3.5 74.0
3+
3.0 92.5
4+
3.5 74.0
5+
3.0 92.5
6+
3.5 74.0
7+
3.0 92.5
8+
3.5 0

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /