1. Формулировка задачи
Итак, условие задачи формулируется предельно просто: дано n плёнок с Ni, найти Nэф.
2. Решение
Скрипт 1. Создание класса ‘layer’
classdef layer
properties
n
k
d
end
methods
%constructor
function obj = layer(n, k, d)
obj.n = n;
obj.k = k;
obj.d = d;
end
%operator overloading
function obj = plus(obj1, obj2)
D = [obj1.d obj2.d];
N = [(obj1.n - i*obj1.k) (obj2.n - i*obj2.k)];
phi0 = pi/6;
phi = asin(sin(phi0)./N);
phi_new = atan(sum(D.*tan(phi))/sum(D));
N = sin(phi0)/sin(phi_new);
obj.n = real(N);
obj.k = -imag(N);
obj.d = sum(D);
end
function obj = mtimes(num, obj2)
obj = obj2
for t=1:(num-1)
obj = obj + obj2
end
end
end
end
Скрипт 2. Пример использования ‘layer’
%создание слоёв
l1 = layer(0.05, 0.07, 3600);
l2 = layer(0.02, 0.012, 1200);
l3 = layer(0.09, 0.01, 125);
%изменение параметров в первом слое
l1.n = 0.06;
l1.d = 720;
%получение эквивалентного
l0 = l1 + l2 + l3;
%чуть сложнее
L =(6*l1+l2) + l3;
Прикладная эллипсометрия часто сталкивается с расчётами слоистых плёночных структур. Если в структуре имеется 3 или более плёнки, то методика решения, например, обратной/прямой задачи эллипсометрии должна быть универсальной, подходить для общих случаев. Оптимизация подобного рода методик часто сводится к введению эффективных элементов.
Одним из таких элементов может послужить сама плёнка, а точнее комплексный показатель преломления плёнки Nэф = n - i*k. При этом нужно сделать допущение, что свет падает на бесконечную плёнку. Рациональность введения Nэф объясняется тем, что структуру нескольких плёнок с Ni можно представить в виде одной плёнки c Nэф.
Итак, условие задачи формулируется предельно просто: дано n плёнок с Ni, найти Nэф.
2. Решение
Вообще говоря, решение данной задачи не выходит за рамки школьного курса оптики. Понятно, что только толщина будет величиной аддитивной, показатель преломления N вычисляется с помощью закона преломления (закон Снеллиуса).
Скрипт 1. Создание класса ‘layer’
classdef layer
properties
n
k
d
end
methods
%constructor
function obj = layer(n, k, d)
obj.n = n;
obj.k = k;
obj.d = d;
end
%operator overloading
function obj = plus(obj1, obj2)
D = [obj1.d obj2.d];
N = [(obj1.n - i*obj1.k) (obj2.n - i*obj2.k)];
phi0 = pi/6;
phi = asin(sin(phi0)./N);
phi_new = atan(sum(D.*tan(phi))/sum(D));
N = sin(phi0)/sin(phi_new);
obj.n = real(N);
obj.k = -imag(N);
obj.d = sum(D);
end
function obj = mtimes(num, obj2)
obj = obj2
for t=1:(num-1)
obj = obj + obj2
end
end
end
end
Скрипт 2. Пример использования ‘layer’
%создание слоёв
l1 = layer(0.05, 0.07, 3600);
l2 = layer(0.02, 0.012, 1200);
l3 = layer(0.09, 0.01, 125);
%изменение параметров в первом слое
l1.n = 0.06;
l1.d = 720;
%получение эквивалентного
l0 = l1 + l2 + l3;
%чуть сложнее
L =(6*l1+l2) + l3;
Комментариев нет:
Отправить комментарий