makeprofile.m

来自「一组很好的FDTD计算二维光子带隙的程序」· M 代码 · 共 43 行

M
43
字号
function p=MakeProfile(w,m,N);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Electromagnetic Finite-Difference Time-Domain %
% Version 1.20, Release 1                       %
%                                               %
%   (C) Copyright 2005                          %
%   Sharif University of Technology             %
%   School of Electrical Engineering            %
%   All Rights Reserved                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

global Y NormalizedFrequency LatticeCnt
global eC mC eF mF

p=zeros(1,Y);

ymin=floor(Y/2-w/2);
ymax=ceil(Y/2+w/2);

w=2*pi*NormalizedFrequency/LatticeCnt;
nf=sqrt(eF*mF);
nc=sqrt(eC*mC);
kf=w*sqrt(nf^2-N^2);
kc=w*sqrt(N^2-nc^2);

for y=ymin:ymax
    if IsEven(m)
        p(y)=cos(kf*(y-Y/2));
    else
        p(y)=sin(kf*(y-Y/2));
    end
end

for y=1:ymin-1
    p(y)=exp(-kc*(ymin-y))*p(ymin);
end

for y=ymax+1:Y
    p(y)=exp(-kc*(y-ymax))*p(ymax);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?