Skip to content

Commit 7e5f225

Browse files
committed
Polarization bugfix, turned off asserts for badly conditioned polarization vecotors (not sure how to warn about it correctly)
1 parent d13d6d4 commit 7e5f225

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

PyATMM/isotropicTransferMatrix.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,16 @@ def isotropic_polarizations(w, eps, kx, ky, kz):
106106
p = [p_1, p_2, p_3, p_4]
107107
p = [numpy.divide(pi, numpy.sqrt(numpy.dot(pi, pi))) for pi in p]
108108

109-
assert numpy.isclose(numpy.dot(p[0], k[0]), 0)
110-
assert numpy.isclose(numpy.dot(p[1], k[1]), 0)
111-
assert numpy.isclose(numpy.dot(p[2], k[2]), 0)
112-
assert numpy.isclose(numpy.dot(p[3], k[3]), 0)
109+
if not numpy.isclose(numpy.dot(p[0], k[0]), 0+0j) \
110+
or not numpy.isclose(numpy.dot(p[1], k[1]), 0+0j) \
111+
or not numpy.isclose(numpy.dot(p[2], k[2]), 0 + 0j) \
112+
or not numpy.isclose(numpy.dot(p[3], k[3]), 0 + 0j):
113+
114+
print("ALYARMA")
115+
116+
#assert numpy.isclose(numpy.dot(p[0], k[0]), 0+0j)
117+
#assert numpy.isclose(numpy.dot(p[1], k[1]), 0+0j)
118+
#assert numpy.isclose(numpy.dot(p[2], k[2]), 0+0j)
119+
#assert numpy.isclose(numpy.dot(p[3], k[3]), 0+0j)
113120

114121
return p

PyATMM/transferMatrix.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,19 @@ def solve_transfer_matrix(M):
178178
denom = M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0]
179179
#print(denom)
180180

181-
r_ss = (M[1, 0]*M[2, 2] - M[1, 2]*M[2, 0]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
182-
r_sp = (M[3, 0]*M[2, 2] - M[3, 2]*M[2, 0]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
183-
r_ps = (M[0, 0]*M[1, 2] - M[1, 0]*M[0, 2]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
184-
r_pp = (M[0, 0]*M[3, 2] - M[3, 0]*M[0, 2]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
185-
t_ss = M[2, 2] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
186-
t_sp = -M[2, 0] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
187-
t_ps = -M[0, 2] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
188-
t_pp = M[0, 0] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
181+
182+
#
183+
# Components 3,4 - S
184+
# Components 1,2 - P Was mixed up until 11.08.2016 (switched s and p)
185+
#
186+
r_pp = (M[1, 0]*M[2, 2] - M[1, 2]*M[2, 0]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
187+
r_ps = (M[3, 0]*M[2, 2] - M[3, 2]*M[2, 0]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
188+
r_sp = (M[0, 0]*M[1, 2] - M[1, 0]*M[0, 2]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
189+
r_ss = (M[0, 0]*M[3, 2] - M[3, 0]*M[0, 2]) / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
190+
t_pp = M[2, 2] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
191+
t_ps = -M[2, 0] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
192+
t_sp = -M[0, 2] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
193+
t_ss = M[0, 0] / (M[0, 0]*M[2, 2] - M[0, 2]*M[2, 0])
189194

190195
return r_ss, r_sp, r_ps, r_pp, t_ss, t_sp, t_ps, t_pp
191196

0 commit comments

Comments
 (0)