📄 fdtd_antipodal_patch.m
字号:
% CFDTD method
clear
clc
%--------------------------------------------------------------------------
% Delta
%--------------------------------------------------------------------------
del_x=0.25;
del_y=0.25;
del_z=0.16;
Area_x=del_y*del_z;
Area_y=del_x*del_z;
Area_z=del_x*del_y;
%--------------------------------------------------------------------------
% Size of the computational domain
%--------------------------------------------------------------------------
Sizex=80; % number of cells in x direction
Sizey=80; % number of cells in y direction
Sizez=30; % number of cells in z direction
Height_first=11;
Height=15; % number of cells for the dielectric substrate
Tmax=1000; % the cycle of Loop
Switch_src=200;
%--------------------------------------------------------------------------
% various strat and stop point for feed and patch
% We define 9 cells for width of feed
%--------------------------------------------------------------------------
% We define Stripline
Line_x_start=38;
Line_width=4;
Line_length=48;
% We define Ground cells
Ground_x_start=1;
Ground_y_start=1;
Ground_width=80;
Ground_y_length=48;
% We define Line for Bowtie
Bline_x_start=39;
Bline_width=2;
Bline_y_start=48;
Bline_length=24;
% we define rectangular
Rec_top_x_start=39;
Rec_top_x_width=25;
Rec_top_y_start=60;
Rec_top_y_length=12;
Rec_bottom_x_start=16;
Rec_bottom_x_width=25;
Rec_bottom_y_start=60;
Rec_bottom_y_length=12;
%--------------------------------------------------------------------------
%Parameter to control the width of the Gaussian pulse, which is
%rather arbitrary. We just need to ensure we have sufficient
%spectral energy at the frequencies
%--------------------------------------------------------------------------
PPW=30;
%--------------------------------------------------------------------------
%Basic parameters:
eps0=1/36/pi*1e-9; % e0 8.8e-12
mur=1;
mu0=4*pi*1e-7; % mr
clight=(mu0*eps0)^-.5; % speed of light
epsr=10.2;
eta=(mu0/eps0)^.5;
%dt=del_x/(sqrt(3)*clight);
dt=del_x/(clight*sqrt((1/del_x)^2+(1/del_y)^2+(1/del_z)^2));
Cdtdsx=clight*dt/del_x;
Cdtdsy=clight*dt/del_y;
Cdtdsz=clight*dt/del_z;
%--------------------------------------------------------------------------
% Initial parameters
%--------------------------------------------------------------------------
Ex=zeros(Sizex,Sizey,Sizez);
Ey=zeros(Sizex,Sizey,Sizez);
Ez=zeros(Sizex,Sizey,Sizez);
Hx=zeros(Sizex,Sizey,Sizez);
Hy=zeros(Sizex,Sizey,Sizez);
Hz=zeros(Sizex,Sizey,Sizez);
%--------------------------------------------------------------------------
% Coefficient Factors
%--------------------------------------------------------------------------
Cexe=zeros(Sizex,Sizey,Sizez);
Ceye=zeros(Sizex,Sizey,Sizez);
Ceze=zeros(Sizex,Sizey,Sizez);
Chxh=zeros(Sizex,Sizey,Sizez);
Chyh=zeros(Sizex,Sizey,Sizez);
Chzh=zeros(Sizex,Sizey,Sizez);
Chxeydz=zeros(Sizex,Sizey,Sizez);
Chxezdy=zeros(Sizex,Sizey,Sizez);
Chyezdx=zeros(Sizex,Sizey,Sizez);
Chyexdz=zeros(Sizex,Sizey,Sizez);
Chzexdy=zeros(Sizex,Sizey,Sizez);
Chzeydx=zeros(Sizex,Sizey,Sizez);
Cexhzdy=zeros(Sizex,Sizey,Sizez);
Cexhydz=zeros(Sizex,Sizey,Sizez);
Ceyhxdz=zeros(Sizex,Sizey,Sizez);
Ceyhzdx=zeros(Sizex,Sizey,Sizez);
Cezhydx=zeros(Sizex,Sizey,Sizez);
Cezhxdy=zeros(Sizex,Sizey,Sizez);
%--------------------------------------------------------------------------
% Abc Initialize
%--------------------------------------------------------------------------
Eyx0=zeros(Sizex,Sizey,Sizez);
Eyx1=zeros(Sizex,Sizey,Sizez);
Ezx0=zeros(Sizex,Sizey,Sizez);
Ezx1=zeros(Sizex,Sizey,Sizez);
Exy0=zeros(Sizex,Sizey,Sizez);
Exy1=zeros(Sizex,Sizey,Sizez);
Ezy0=zeros(Sizex,Sizey,Sizez);
Ezy1=zeros(Sizex,Sizey,Sizez);
Exz0=zeros(Sizex,Sizey,Sizez);
Exz1=zeros(Sizex,Sizey,Sizez);
Eyz0=zeros(Sizex,Sizey,Sizez);
Eyz1=zeros(Sizex,Sizey,Sizez);
%--------------------------------------------------------------------------
% ABC Arrays
%--------------------------------------------------------------------------
% Ex
abcAir_x=(Cdtdsx-1.0)/(Cdtdsx+1.0);
abcDie_x=(Cdtdsx/sqrt(epsr)-1.0)/(Cdtdsx/sqrt(epsr)+1.0);
abcAvg_x=(Cdtdsx/sqrt((epsr+1.0)/2.0)-1.0)/(Cdtdsx/sqrt((epsr+1.0)/2.0)+1.0);
% Ey
abcAir_y=(Cdtdsy-1.0)/(Cdtdsy+1.0);
abcDie_y=(Cdtdsy/sqrt(epsr)-1.0)/(Cdtdsy/sqrt(epsr)+1.0);
abcAvg_y=(Cdtdsy/sqrt((epsr+1.0)/2.0)-1.0)/(Cdtdsy/sqrt((epsr+1.0)/2.0)+1.0);
% Ez
abcAir_z=(Cdtdsz-1.0)/(Cdtdsz+1.0);
abcDie_z=(Cdtdsz/sqrt(epsr)-1.0)/(Cdtdsz/sqrt(epsr)+1.0);
abcAvg_z=(Cdtdsz/sqrt((epsr+1.0)/2.0)-1.0)/(Cdtdsz/sqrt((epsr+1.0)/2.0)+1.0);
%--------------------------------------------------------------------------
% set electric-field update coeddicient
%--------------------------------------------------------------------------
for i=1:Sizex-1
for j=1:Sizey
for k=1:Sizez
Cexe(i,j,k)=1;
if k>Height_first && k<Height
Cexhzdy(i,j,k)=Cdtdsy*eta/epsr;
Cexhydz(i,j,k)=Cdtdsz*eta/epsr;
elseif k==Height
Cexhzdy(i,j,k)=Cdtdsy*eta/((epsr+1)/2);
Cexhydz(i,j,k)=Cdtdsz*eta/((epsr+1)/2);
elseif k==Height_first
Cexhzdy(i,j,k)=Cdtdsy*eta/((epsr+1)/2);
Cexhydz(i,j,k)=Cdtdsz*eta/((epsr+1)/2);
else
Cexhzdy(i,j,k)=Cdtdsy*eta;
Cexhydz(i,j,k)=Cdtdsz*eta;
end
end
end
end
for i=1:Sizex
for j=1:Sizey-1
for k=1:Sizez
Ceye(i,j,k)=1;
if k>Height_first && k<Height
Ceyhxdz(i,j,k)=Cdtdsz*eta/epsr;
Ceyhzdx(i,j,k)=Cdtdsx*eta/epsr;
elseif k==Height
Ceyhxdz(i,j,k)=Cdtdsz*eta/((epsr+1)/2);
Ceyhzdx(i,j,k)=Cdtdsx*eta/((epsr+1)/2);
elseif k==Height_first
Ceyhxdz(i,j,k)=Cdtdsz*eta/((epsr+1)/2);
Ceyhzdx(i,j,k)=Cdtdsx*eta/((epsr+1)/2);
else
Ceyhxdz(i,j,k)=Cdtdsz*eta;
Ceyhzdx(i,j,k)=Cdtdsx*eta;
end
end
end
end
for i=1:Sizex
for j=1:Sizey
for k=1:Sizez-1
Ceze(i,j,k)=1;
if k>Height_first && k<Height
Cezhydx(i,j,k)=Cdtdsx*eta/epsr;
Cezhxdy(i,j,k)=Cdtdsy*eta/epsr;
else
Cezhydx(i,j,k)=Cdtdsx*eta;
Cezhxdy(i,j,k)=Cdtdsy*eta;
end
end
end
end
%--------------------------------------------------------------------------
% In present of patch
%--------------------------------------------------------------------------
% Ground
Cexe(Ground_x_start:Ground_x_start+Ground_width-1,Ground_y_start:Ground_y_length,Height_first)=0;
Cexhzdy(Ground_x_start:Ground_x_start+Ground_width-1,Ground_y_start:Ground_y_length,Height_first)=0;
Cexhydz(Ground_x_start:Ground_x_start+Ground_width-1,Ground_y_start:Ground_y_length,Height_first)=0;
Ceye(Ground_x_start:Ground_x_start+Ground_width,Ground_y_start:Ground_y_length-1,Height_first)=0;
Ceyhxdz(Ground_x_start:Ground_x_start+Ground_width,Ground_y_start:Ground_y_length-1,Height_first)=0;
Ceyhzdx(Ground_x_start:Ground_x_start+Ground_width,Ground_y_start:Ground_y_length-1,Height_first)=0;
% Microstrip feed to patch
Cexe(Line_x_start:Line_x_start+Line_width-1,1:Line_length,Height)=0;
Cexhzdy(Line_x_start:Line_x_start+Line_width-1,1:Line_length,Height)=0;
Cexhydz(Line_x_start:Line_x_start+Line_width-1,1:Line_length,Height)=0;
Ceye(Line_x_start:Line_x_start+Line_width,1:Line_length-1,Height)=0;
Ceyhxdz(Line_x_start:Line_x_start+Line_width,1:Line_length-1,Height)=0;
Ceyhzdx(Line_x_start:Line_x_start+Line_width,1:Line_length-1,Height)=0;
% Microstrip Bowtie Line in ground Plane
Cexe(Bline_x_start:Bline_x_start+Bline_width-1,Bline_y_start:Bline_y_start+Bline_length,Height_first)=0;
Cexhzdy(Bline_x_start:Bline_x_start+Bline_width-1,Bline_y_start:Bline_y_start+Bline_length,Height_first)=0;
Cexhydz(Bline_x_start:Bline_x_start+Bline_width-1,Bline_y_start:Bline_y_start+Bline_length,Height_first)=0;
Ceye(Bline_x_start:Bline_x_start+Bline_width,Bline_y_start:Bline_y_start+Bline_length-1,Height_first)=0;
Ceyhxdz(Bline_x_start:Bline_x_start+Bline_width,Bline_y_start:Bline_y_start+Bline_length-1,Height_first)=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -