@@ -3,6 +3,72 @@ using LinearAlgebra,CUDA
3
3
using .. Common
4
4
5
5
export squarescale_reftra
6
+ taylorx (dnx,dny,Kx,Ky,λ,l:: SimpleLayer )= eigenmodes (dnx,dny,Kx,Ky,λ,l). X
7
+ function taylorx (dnx,dny,Kx,Ky,λ,l:: AnisotropicLayer )
8
+ # probably doable without taylor as well?
9
+ IMa= Diagonal (Kx* 0 .+ 1 )
10
+ IM= [IMa 0 * IMa;0 * IMa IMa]
11
+ k0= 2 π/ real (λ)
12
+ # get the base permittivity
13
+ εxx= get_permittivity (l. materials[1 ],λ,1 )* I
14
+ εxy= get_permittivity (l. materials[1 ],λ,2 )* I
15
+ εyx= get_permittivity (l. materials[1 ],λ,3 )* I
16
+ εyy= get_permittivity (l. materials[1 ],λ,4 )* I
17
+ εzz= get_permittivity (l. materials[1 ],λ,5 )* I
18
+ a01= 0
19
+ a11= - 0.10036558103014462001
20
+ a21= - 0.00802924648241156960
21
+ a31= - 0.00089213849804572995
22
+
23
+ b01= 0
24
+ b11= 0.39784974949964507614
25
+ b21= 1.36783778460411719922
26
+ b31= 0.49828962252538267755
27
+ b41= - 0.00063789819459472330
28
+
29
+ b02= - 10.9676396052962062593
30
+ b12= 1.68015813878906197182
31
+ b22= 0.05717798464788655127
32
+ b32= - 0.00698210122488052084
33
+ b42= 0.00003349750170860705
34
+
35
+ b03= - 0.09043168323908105619
36
+ b13= - 0.06764045190713819075
37
+ b23= 0.06759613017704596460
38
+ b33= 0.02955525704293155274
39
+ b43= - 0.00001391802575160607
40
+
41
+ b04= 0
42
+ b14= 0
43
+ b24= - 0.09233646193671185927
44
+ b34= - .01693649390020817171
45
+ b44= - 0.00001400867981820361
46
+ η= inv (εzz)
47
+ P= [Kx* η* Ky I- Kx* η* Kx;Ky* η* Ky- I - Ky* η* Kx]
48
+ Q= [Kx* Ky+ εyx εyy- Kx* Kx;Ky* Ky- εxx - εxy- Ky* Kx]
49
+ A0= [0 IM P;Q 0 IM]* k0* l. thickness
50
+ nrm= maximum (sum (abs .(A0),dims= 1 ))
51
+ m= Int (ceil (log2 (nrm)))
52
+ A= A0* 2.0 ^- m
53
+ PQ= P* Q
54
+ PQP= PQ* P
55
+ QP= Q* P
56
+ QPQ= QP* Q
57
+ A2= [PQ 0 IM;0 IM QP]* (k0* l. thickness* 2.0 ^- m)^ 2
58
+ A3= [0 IM PQP;QP* Q 0 IM]* (k0* l. thickness* 2.0 ^- m)^ 3
59
+ A6= [PQP* QPQ 0 IM;0 IM QPQ* PQP]* (k0* l. thickness* 2.0 ^- m)^ 6
60
+ # A2=A*A
61
+ # A3=A2*A
62
+ # A6=A3*A3
63
+ B1= a01* I+ a11* A+ a21* A2+ a31* A3
64
+ B2= b01* I+ b11* A+ b21* A2+ b31* A3+ b41* A6
65
+ B3= b02* I+ b12* A+ b22* A2+ b32* A3+ b42* A6
66
+ B4= b03* I+ b13* A+ b23* A2+ b33* A3+ b43* A6
67
+ B5= b04* I+ b14* A+ b24* A2+ b34* A3+ b44* A6
68
+ A9= B1* B5+ B4
69
+ X= B2+ (B3+ A9)* A9
70
+ return X^ (2 ^ m)
71
+ end
6
72
7
73
function taylorx (dnx,dny,Kx,Ky,λ,l:: PatternedLayer )
8
74
IMa= Diagonal (Kx* 0 .+ 1 )
0 commit comments