摘要
导纳是薄膜特性中的一个重要概念,如果知道导纳值就可以很快捷地计算出薄膜的光谱特性,所以在计算机中高效地计算导纳是加速薄膜计算的重要组成步骤,本文给出了一种迭代计算导纳的数值计算方法。
1.导纳的迭代公式
在光学薄膜特性理论计算2-传输矩阵法使用了组合导纳的方法去计算多层膜的特征矩阵。任意一个光学薄膜系统都可以用一等效界面来表示,甚至一个膜系中的任一一层都可以看作是对这个组合导纳进行了修改,如果能够形象地表示出每层薄膜在生长过程中的导纳变化,将有助于更直观的分析薄膜系统的特性和变化规律。
首先观察单层膜的导纳计算公式
\[
\begin{bmatrix}
B\\
C
\end{bmatrix} =\begin{bmatrix}
\cos{\delta_1} & -\frac{i}{\eta_1} \sin{\delta_1} \\
{-i\eta_1} \sin{\delta_1} & \cos{\delta_1}
\end{bmatrix}\begin{bmatrix}
1\\
\eta_s
\end{bmatrix}
\]
记特征矩阵的四个值分别为\(A_1\)、\(A_2\)、\(A_3\)、\(A_4\),则导纳 \(Y=C/B = (A_3 + A_4 \eta_s)/(A_1 +
A_2\eta_s)\)
如果在它之上生长一层薄膜,可以将Y视作等效基底,这层膜中的所有导纳无需重复计算两个特征矩阵然后相乘,只需要使用迭代公式计算
\[
\begin{bmatrix}
B_2\\
C_2
\end{bmatrix} =\begin{bmatrix}
\cos{\delta_2} & -\frac{i}{\eta_2} \sin{\delta_2} \\
{-i\eta_2} \sin{\delta_2} & \cos{\delta_2}
\end{bmatrix}\begin{bmatrix}
1\\
Y
\end{bmatrix}
\]
所以对于同一层膜层来说,有迭代公式
\[
A_j = \frac{-i\eta_j \sin{\delta_j} + A_{j-1}
\cos{\delta_j}}{\cos{\delta_j} - (i/\eta_j)A_{j-1}\sin{\delta_j}}
\]
其中\(A_j\)是当前导纳,\(A_{j-1}\)是下一层到基底的组合导纳,\(\eta_j\)是当前成的等效导纳,\(\delta_j\)是相位厚度。
给出导纳图的matlab参考计算代码,在绘制导纳图的时候,需要使用修正导纳,这样计算结果才和MacLeod一致。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| function [FWOT, Admittance_sx,Admittance_sy,Admittance_px,Admittance_py] = Show_Admittance2(Design,Calculation)
theta0 = deg2rad(Calculation.Incident_Angle); wavelength = Calculation.Wavelength;
[n0,n_ls,ns] = GET_opticalProperties(Design,wavelength);
d_ls = Design.Physical_depth_ls; od_ls = real(n_ls).*d_ls./wavelength;
final = sum(od_ls(Calculation.Start_Layer:Calculation.End_Layer)); FWOT = 0:Calculation.Interval:final;
Admittance_sx = zeros(size(FWOT)); Admittance_sy = zeros(size(FWOT)); Admittance_px = zeros(size(FWOT)); Admittance_py = zeros(size(FWOT));
costheta0 = cos(theta0); sin(theta0) costhetas = sqrt(1-n0^2*sin(theta0)^2/(ns^2)); eta_ss = ns*costhetas/costheta0; eta_ps = ns*costheta0/costhetas;
ToCalLayerNum = Calculation.Start_Layer:Calculation.End_Layer; ToCalLayerNum = flip(ToCalLayerNum);
for i = 1:length(ToCalLayerNum) num = ToCalLayerNum(i); if num == length(n_ls) ToCalList.As0(i) = eta_ss; ToCalList.Ap0(i) = eta_ps; else od_temp = od_ls(num+1:end); n_ls_temp = n_ls(num+1:end); pd_temp = od_temp.*wavelength./real(n_ls_temp); [Ms_all,Mp_all] = GET_muti_fix_TRM(n0,n_ls_temp,pd_temp,wavelength,theta0); combMYs = Ms_all*[1;eta_ss]; combMYp = Mp_all*[1;eta_ps]; Ys = combMYs(2)/combMYs(1); Yp = combMYp(2)/combMYp(1); ToCalList.As0(i) = Ys; ToCalList.Ap0(i) = Yp; end ToCalList.od(i) = od_ls(num); ToCalList.nj(i) = n_ls(num); ToCalList.costheta1(i) = sqrt(1-(n0^2*sin(theta0)^2)/(n_ls(num)^2)); end
point = 1; od_acc = 0; As0 = ToCalList.As0(1); Ap0 = ToCalList.Ap0(1); nowThickness = ToCalList.od(1); nj = ToCalList.nj(1); costheta1 = ToCalList.costheta1(1); eta_p1 = nj*costheta0/costheta1; eta_s1 = nj*costheta1/costheta0;
for i = 1:numel(FWOT) od_now_point = FWOT(i) - od_acc; if od_now_point > nowThickness point = point + 1; od_acc = od_acc + nowThickness; As0 = ToCalList.As0(point); Ap0 = ToCalList.Ap0(point); nowThickness = ToCalList.od(point); nj = ToCalList.nj(point); costheta1 = sqrt(1-(n0^2*sin(theta0)^2)/(nj^2)); eta_s1 = nj*costheta1/costheta0; eta_p1 = nj*costheta0/costheta1; od_now_point = FWOT(i) - od_acc; end dj = od_now_point*wavelength/real(nj); deta = (2*pi/wavelength)*(nj*dj*costheta1); Ys = (-1i*eta_s1*sin(deta) + As0*cos(deta))/(cos(deta) + (-1i/eta_s1)*As0*sin(deta)); Yp = (-1i*eta_p1*sin(deta) + Ap0*cos(deta))/(cos(deta) + (-1i/eta_p1)*Ap0*sin(deta)); Admittance_sx(i) = real(Ys); Admittance_sy(i) = imag(-Ys); Admittance_px(i) = real(Yp); Admittance_py(i) = imag(-Yp); end
|
导纳图
参考资料
[1]白胜元.光学薄膜设计及其在光波分复用系统中的应用[D].浙江大学,2001.
[2] 唐晋发.现代光学薄膜技术.浙江大学出版社.2006年