⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdtd_antipodal_patch.m

📁 A matlab code or FDTD simulation of anti-podal patch
💻 M
📖 第 1 页 / 共 2 页
字号:
Ceyhzdx(Bline_x_start:Bline_x_start+Bline_width,Bline_y_start:Bline_y_start+Bline_length-1,Height_first)=0;
% Microstrip Bowtie Line on patch
Cexe(Bline_x_start:Bline_x_start+Bline_width-1,Bline_y_start:Bline_y_start+Bline_length,Height)=0;
Cexhzdy(Bline_x_start:Bline_x_start+Bline_width-1,Bline_y_start:Bline_y_start+Bline_length,Height)=0;
Cexhydz(Bline_x_start:Bline_x_start+Bline_width-1,Bline_y_start:Bline_y_start+Bline_length,Height)=0;
Ceye(Bline_x_start:Bline_x_start+Bline_width,Bline_y_start:Bline_y_start+Bline_length-1,Height)=0;
Ceyhxdz(Bline_x_start:Bline_x_start+Bline_width,Bline_y_start:Bline_y_start+Bline_length-1,Height)=0;
Ceyhzdx(Bline_x_start:Bline_x_start+Bline_width,Bline_y_start:Bline_y_start+Bline_length-1,Height)=0; 
% patch top
Cexe(Rec_top_x_start:Rec_top_x_start+Rec_top_x_width-1,Rec_top_y_start:Rec_top_y_start+Rec_top_y_length,Height)=0;
Cexhzdy(Rec_top_x_start:Rec_top_x_start+Rec_top_x_width-1,Rec_top_y_start:Rec_top_y_start+Rec_top_y_length,Height)=0;
Cexhydz(Rec_top_x_start:Rec_top_x_start+Rec_top_x_width-1,Rec_top_y_start:Rec_top_y_start+Rec_top_y_length,Height)=0;
Ceye(Rec_top_x_start:Rec_top_x_start+Rec_top_x_width,Rec_top_y_start:Rec_top_y_start+Rec_top_y_length-1,Height)=0;
Ceyhxdz(Rec_top_x_start:Rec_top_x_start+Rec_top_x_width,Rec_top_y_start:Rec_top_y_start+Rec_top_y_length-1,Height)=0;
Ceyhzdx(Rec_top_x_start:Rec_top_x_start+Rec_top_x_width,Rec_top_y_start:Rec_top_y_start+Rec_top_y_length-1,Height)=0; 
% Patch bottom
Cexe(Rec_bottom_x_start:Rec_bottom_x_start+Rec_bottom_x_width-1,Rec_bottom_y_start:Rec_bottom_y_start+Rec_bottom_y_length,Height_first)=0;
Cexhzdy(Rec_bottom_x_start:Rec_bottom_x_start+Rec_bottom_x_width-1,Rec_bottom_y_start:Rec_bottom_y_start+Rec_bottom_y_length,Height_first)=0;
Cexhydz(Rec_bottom_x_start:Rec_bottom_x_start+Rec_bottom_x_width-1,Rec_bottom_y_start:Rec_bottom_y_start+Rec_bottom_y_length,Height_first)=0;
Ceye(Rec_bottom_x_start:Rec_bottom_x_start+Rec_bottom_x_width,Rec_bottom_y_start:Rec_bottom_y_start+Rec_bottom_y_length-1,Height_first)=0;
Ceyhxdz(Rec_bottom_x_start:Rec_bottom_x_start+Rec_bottom_x_width,Rec_bottom_y_start:Rec_bottom_y_start+Rec_bottom_y_length-1,Height_first)=0;
Ceyhzdx(Rec_bottom_x_start:Rec_bottom_x_start+Rec_bottom_x_width,Rec_bottom_y_start:Rec_bottom_y_start+Rec_bottom_y_length-1,Height_first)=0;
%--------------------------------------------------------------------------
% Set magnetic-field update coefficients
%--------------------------------------------------------------------------
Chxh(1:Sizex,1:Sizey-1,1:Sizez-1)=1;
Chxeydz(1:Sizex,1:Sizey-1,1:Sizez-1)=Cdtdsz/eta;
Chxezdy(1:Sizex,1:Sizey-1,1:Sizez-1)=Cdtdsy/eta;
Chyh(1:Sizex-1,1:Sizey,1:Sizez-1)=1;
Chyezdx(1:Sizex-1,1:Sizey,1:Sizez-1)=Cdtdsx/eta;
Chyexdz(1:Sizex-1,1:Sizey,1:Sizez-1)=Cdtdsz/eta;
Chzh(1:Sizex-1,1:Sizey-1,1:Sizez)=1;
Chzexdy(1:Sizex-1,1:Sizey-1,1:Sizez)=Cdtdsy/eta;
Chzeydx(1:Sizex-1,1:Sizey-1,1:Sizez)=Cdtdsx/eta;
%--------------------------------------------------------------------------
% Main Loop
%--------------------------------------------------------------------------
for Time=1:Tmax
   %H field update
  Hx(1:Sizex,1:Sizey-1,1:Sizez-1)=Chxh(1:Sizex,1:Sizey-1,1:Sizez-1).*Hx(1:Sizex,1:Sizey-1,1:Sizez-1)+Chxeydz(1:Sizex,1:Sizey-1,1:Sizez-1).*(Ey(1:Sizex,1:Sizey-1,2:Sizez)-Ey(1:Sizex,1:Sizey-1,1:Sizez-1))-Chxezdy(1:Sizex,1:Sizey-1,1:Sizez-1).*(Ez(1:Sizex,2:Sizey,1:Sizez-1)-Ez(1:Sizex,1:Sizey-1,1:Sizez-1));
  Hy(1:Sizex-1,1:Sizey,1:Sizez-1)=Chyh(1:Sizex-1,1:Sizey,1:Sizez-1).*Hy(1:Sizex-1,1:Sizey,1:Sizez-1)+Chyezdx(1:Sizex-1,1:Sizey,1:Sizez-1).*(Ez(2:Sizex,1:Sizey,1:Sizez-1)-Ez(1:Sizex-1,1:Sizey,1:Sizez-1))-Chyexdz(1:Sizex-1,1:Sizey,1:Sizez-1).*(Ex(1:Sizex-1,1:Sizey,2:Sizez)-Ex(1:Sizex-1,1:Sizey,1:Sizez-1));
  Hz(1:Sizex-1,1:Sizey-1,1:Sizez)=Chzh(1:Sizex-1,1:Sizey-1,1:Sizez).*Hz(1:Sizex-1,1:Sizey-1,1:Sizez)+Chzexdy(1:Sizex-1,1:Sizey-1,1:Sizez).*(Ex(1:Sizex-1,2:Sizey,1:Sizez)-Ex(1:Sizex-1,1:Sizey-1,1:Sizez))-Chzeydx(1:Sizex-1,1:Sizey-1,1:Sizez).*(Ey(2:Sizex,1:Sizey-1,1:Sizez)-Ey(1:Sizex-1,1:Sizey-1,1:Sizez));  
  Ex(1:Sizex-1,2:Sizey-1,2:Sizez-1)=Cexe(1:Sizex-1,2:Sizey-1,2:Sizez-1).*Ex(1:Sizex-1,2:Sizey-1,2:Sizez-1)+Cexhzdy(1:Sizex-1,2:Sizey-1,2:Sizez-1).*(Hz(1:Sizex-1,2:Sizey-1,2:Sizez-1)-Hz(1:Sizex-1,1:Sizey-2,2:Sizez-1))-Cexhydz(1:Sizex-1,2:Sizey-1,2:Sizez-1).*(Hy(1:Sizex-1,2:Sizey-1,2:Sizez-1)-Hy(1:Sizex-1,2:Sizey-1,1:Sizez-2));
  Ey(2:Sizex-1,1:Sizey-1,2:Sizez-1)=Ceye(2:Sizex-1,1:Sizey-1,2:Sizez-1).*Ey(2:Sizex-1,1:Sizey-1,2:Sizez-1)+Ceyhxdz(2:Sizex-1,1:Sizey-1,2:Sizez-1).*(Hx(2:Sizex-1,1:Sizey-1,2:Sizez-1)-Hx(2:Sizex-1,1:Sizey-1,1:Sizez-2))-Ceyhzdx(2:Sizex-1,1:Sizey-1,2:Sizez-1).*(Hz(2:Sizex-1,1:Sizey-1,2:Sizez-1)-Hz(1:Sizex-2,1:Sizey-1,2:Sizez-1));
  Ez(2:Sizex-1,2:Sizey-1,1:Sizez-1)=Ceze(2:Sizex-1,2:Sizey-1,1:Sizez-1).*Ez(2:Sizex-1,2:Sizey-1,1:Sizez-1)+Cezhydx(2:Sizex-1,2:Sizey-1,1:Sizez-1).*(Hy(2:Sizex-1,2:Sizey-1,1:Sizez-1)-Hy(1:Sizex-2,2:Sizey-1,1:Sizez-1))-Cezhxdy(2:Sizex-1,2:Sizey-1,1:Sizez-1).*(Hx(2:Sizex-1,2:Sizey-1,1:Sizez-1)-Hx(2:Sizex-1,1:Sizey-2,1:Sizez-1));           
    %----------------------------------------------------------------------
    % ABC Update
    %----------------------------------------------------------------------
    % ABC at x0
    i=1;
    for j=1:Sizey-1
        for k=1:Sizez
            if k>Height_first && k<Height
                Ey(i,j,k)=Eyx0(i,j,k)+abcDie_y*(Ey(i+1,j,k)-Ey(i,j,k));
            elseif k==Height
                Ey(i,j,k)=Eyx0(i,j,k)+abcAvg_y*(Ey(i+1,j,k)-Ey(i,j,k));
            elseif k==Height_first
                Ey(i,j,k)=Eyx0(i,j,k)+abcAvg_y*(Ey(i+1,j,k)-Ey(i,j,k));
            else
                Ey(i,j,k)=Eyx0(i,j,k)+abcAir_y*(Ey(i+1,j,k)-Ey(i,j,k));
            end
            Eyx0(i,j,k)=Ez(i+1,j,k);
        end
    end
    for j=1:Sizey
        for k=1:Sizez-1
            if k>Height_first && k<Height
                Ez(i,j,k)=Ezx0(i,j,k)+abcDie_z*(Ez(i+1,j,k)-Ez(i,j,k));
            else
                Ez(i,j,k)=Ezx0(i,j,k)+abcAir_z*(Ez(i+1,j,k)-Ez(i,j,k));
            end
            Ezx0(i,j,k)=Ez(i+1,j,k);
        end
    end
    % AbC at x1
    i=Sizex;
    for j=1:Sizey-1
        for k=1:Sizez
            if k>Height_first && k<Height
                Ey(i,j,k)=Eyx1(i,j,k)+abcDie_y*(Ey(i-1,j,k)-Ey(i,j,k));
            elseif k==Height
                Ey(i,j,k)=Eyx1(i,j,k)+abcAvg_y*(Ey(i-1,j,k)-Ey(i,j,k));
            elseif k==Height_first
                Ey(i,j,k)=Eyx1(i,j,k)+abcAvg_y*(Ey(i-1,j,k)-Ey(i,j,k));
            else
                Ey(i,j,k)=Eyx1(i,j,k)+abcAir_y*(Ey(i-1,j,k)-Ey(i,j,k));
            end
            Eyx1(i,j,k)=Ez(i-1,j,k);
        end
    end
    for j=1:Sizey
        for k=1:Sizez-1
            if k>Height_first && k<Height
                Ez(i,j,k)=Ezx1(i,j,k)+abcDie_z*(Ez(i-1,j,k)-Ez(i,j,k));
            else
                Ez(i,j,k)=Ezx1(i,j,k)+abcAir_z*(Ez(i-1,j,k)-Ez(i,j,k));
            end
            Ezx1(i,j,k)=Ez(i-1,j,k);
        end
    end
    if Time<Switch_src
        %------------------------------------------------------------------
        % Ex nodes on y0 wall have special updates while the wall is
        % acting as the source plane
        %------------------------------------------------------------------
        
        Ex(1:Sizex-1,1,2:Sizez-1)=Cexe(1:Sizex-1,1,2:Sizez-1).*Ex(1:Sizex-1,1,2:Sizez-1)+Cexhzdy(1:Sizex-1,1,2:Sizez-1).*(2*Hz(1:Sizex-1,1,2:Sizez-1))-Cexhydz(1:Sizex-1,1,2:Sizez-1).*(Hy(1:Sizex-1,1,2:Sizez-1)-Hy(1:Sizex-1,1,1:Sizez-2));
        Ez(2:Sizex-1,1,1:Sizez-1)=Ceze(2:Sizex-1,1,1:Sizez-1).*Ez(2:Sizex-1,1,1:Sizez-1)+Cezhydx(2:Sizex-1,1,1:Sizez-1).*(Hy(2:Sizex-1,1,1:Sizez-1)-Hy(1:Sizex-2,1,1:Sizez-1))-Cezhxdy(2:Sizex-1,1,1:Sizez-1).*(2*Hx(2:Sizex-1,1,1:Sizez-1));  
        %***********************************************************************
        %     Differentiated Gaussian pulse excitation
        %***********************************************************************
        %arg=(Time-30)/20;
        %Pulse=exp(-arg*arg);
        Pulse=exp(-.5*(((Time*Cdtdsx)/PPW).^2.0));
        Ez(Line_x_start:Line_x_start+Line_width,1,Height_first:Height-1)=Pulse;
    else
        % ABC at y0
        j=1;
        for i=1:Sizex-1
            for k=1:Sizez
                if k>Height_first && k<Height
                    Ex(i,j,k)=Exy0(i,j,k)+abcDie_x*(Ex(i,j+1,k)-Ex(i,j,k));
                elseif k==Height
                    Ex(i,j,k)=Exy0(i,j,k)+abcAvg_x*(Ex(i,j+1,k)-Ex(i,j,k));
                elseif k==Height_first
                    Ex(i,j,k)=Exy0(i,j,k)+abcAvg_x*(Ex(i,j+1,k)-Ex(i,j,k));
                else
                    Ex(i,j,k)=Exy0(i,j,k)+abcAir_x*(Ex(i,j+1,k)-Ex(i,j,k));
                end
                Exy0(i,j,k)=Ex(i,j+1,k);
            end
        end
        for i=1:Sizex
            for k=1:Sizez-1
                if k>Height_first && k<Height
                    Ez(i,j,k)=Ezy0(i,j,k)+abcDie_z*(Ez(i,j+1,k)-Ez(i,j,k));
                else
                    Ez(i,j,k)=Ezy0(i,j,k)+abcAir_z*(Ez(i,j+1,k)-Ez(i,j,k));
                end
                Ezy0(i,j,k)=Ez(i,j+1,k);
            end
        end
    end
    % ABC at y1
    j=Sizey;
    for i=1:Sizex-1
        for k=1:Sizez
            if k>Height_first && k<Height
                Ex(i,j,k)=Exy1(i,j,k)+abcDie_x*(Ex(i,j-1,k)-Ex(i,j,k));
            elseif k==Height
                Ex(i,j,k)=Exy1(i,j,k)+abcAvg_x*(Ex(i,j-1,k)-Ex(i,j,k));
            elseif k==Height_first
                Ex(i,j,k)=Exy1(i,j,k)+abcAvg_x*(Ex(i,j-1,k)-Ex(i,j,k));
            else
                Ex(i,j,k)=Exy1(i,j,k)+abcAir_x*(Ex(i,j-1,k)-Ex(i,j,k));
            end
            Exy1(i,j,k)=Ex(i,j-1,k);
        end
    end
    for i=1:Sizex
        for k=1:Sizez-1
            if k>Height_first && k<Height
               Ez(i,j,k)=Ezy1(i,j,k)+abcDie_z*(Ez(i,j-1,k)-Ez(i,j,k));
            else
               Ez(i,j,k)=Ezy1(i,j,k)+abcAir_z*(Ez(i,j-1,k)-Ez(i,j,k));
            end
            Ezy1(i,j,k)=Ez(i,j-1,k);
        end
    end
    % ABC at z=1 (top)
    k=Sizez;
    for i=1:Sizex-1
        for j=1:Sizey
            Ex(i,j,k)=Exz1(i,j,k)+abcAir_x*(Ex(i,j,k-1)-Ex(i,j,k));
            Exz1(i,j,k)=Ex(i,j,k-1);
        end
    end
    for i=1:Sizex
        for j=1:Sizey-1
            Ey(i,j,k)=Eyz1(i,j,k)+abcAir_y*(Ey(i,j,k-1)-Ey(i,j,k));
            Eyz1(i,j,k)=Ey(i,j,k-1);
        end
    end
    % ABC at z=1 (bottom)  
    k=1;
    for i=1:Sizex-1
        for j=1:Sizey
            Ex(i,j,k)=Exz0(i,j,k)+abcAir_x*(Ex(i,j,k+1)-Ex(i,j,k));
            Exz0(i,j,k)=Ex(i,j,k+1);
        end
    end
    for i=1:Sizex
        for j=1:Sizey-1
            Ey(i,j,k)=Eyz0(i,j,k)+abcAir_y*(Ey(i,j,k+1)-Ey(i,j,k));
            Eyz0(i,j,k)=Ey(i,j,k+1);
        end
    end
    %------------------------------------------------------------------
    % Record the voltage
    %------------------------------------------------------------------
    Voltage=0;
    for k=Height_first:Height-1
       %Voltage=Voltage+Ez(Line_x_start+(Line_width)/2,Line_length-60,k);
        Voltage=Voltage+Ez(Line_x_start+(Line_width)/2,25,k);
    end    
    Voltage_patch(Time+1)=Voltage;
    Time
end

⌨️ 快捷键说明

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