预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共30页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

电磁学中几种重要的数值计算方法电磁学基本方程麦克斯韦方程组中的运算符设有一连续函数,现欲求。FDTD空间域的离散化FDTD空间域的离散化FDTD空间偏微分的近似FDTD时间偏微分的近似麦克斯韦方程的离散化近似麦克斯韦方程的离散化近似FDTD的离散参数的选择FDTD的离散参数的稳定性条件介质电磁参量的设定色散介质的FDTD模拟色散介质的FDTD模拟FDTD编程流程编程举例1:一维FDTD问题编程举例1:一维FDTD问题%Initializefieldandmaterialarrays Ceze=zeros(nx+1,1); Cezhy=zeros(nx+1,1); Cezj=zeros(nx+1,1); Ez=zeros(nx+1,1); Jz=zeros(nx+1,1); eps_r_z=ones(nx+1,1);%freespace sigma_e_z=zeros(nx+1,1);%freespace Chyh=zeros(nx,1); Chyez=zeros(nx,1); Chym=zeros(nx,1); Hy=zeros(nx,1); My=zeros(nx,1); mu_r_y=ones(nx,1);%freespace sigma_m_y=zeros(nx,1);%freespace %CalculateFDTDupdatingcoefficients Ceze=(2*eps_r_z*eps_0-dt*sigma_e_z)... ./(2*eps_r_z*eps_0+dt*sigma_e_z); Cezhy=(2*dt/dx)... ./(2*eps_r_z*eps_0+dt*sigma_e_z); Cezj=(-2*dt)... ./(2*eps_r_z*eps_0+dt*sigma_e_z); Chyh=(2*mu_r_y*mu_0-dt*sigma_m_y)... ./(2*mu_r_y*mu_0+dt*sigma_m_y); Chyez=(2*dt/dx)... ./(2*mu_r_y*mu_0+dt*sigma_m_y); Chym=(-2*dt)... ./(2*mu_r_y*mu_0+dt*sigma_m_y); %DefinetheGaussiansourcewaveform time=dt*[0:number_of_time_steps-1].'; Jz_waveform=exp(-((time-2e-10)/5e-11).^2); source_position_index=round(nx*source_position/domain_size)+1; %Subroutinetoinitializeplotting initialize_plotting_parameters; %FDTDloop fortime_step=1:number_of_time_steps %UpdateJzforthecurrenttimestep Jz(source_position_index)=Jz_waveform(time_step); %Updatemagneticfield Hy(1:nx)=Chyh(1:nx).*Hy(1:nx)... +Chyez(1:nx).*(Ez(2:nx+1)-Ez(1:nx))... +Chym(1:nx).*My(1:nx); %Updateelectricfield Ez(2:nx)=Ceze(2:nx).*Ez(2:nx)... +Cezhy(2:nx).*(Hy(2:nx)-Hy(1:nx-1))... +Cezj(2:nx).*Jz(2:nx); Ez(1)=0;%ApplyPECboundaryconditionatx=0m Ez(nx+1)=0;%ApplyPECboundaryconditionatx=1m %Subroutinetoplotthecurrentstateofthefields plot_fields; end %subroutineusedtoplot1Dtransientfields delete(lez); delete(lhy); lez=line(Ez_positions,Ez*0,Ez,'Color','b','LineWidth',1.5); lhy=line(Hy_positions,377*Hy,Hy*0,'Color','r',... 'LineWidth',1.5,'linestyle','-.'); ts=num2str(time_step); ti=num2str(dt*time_step*1e9); title(['timestep='ts',time='ti'ns']);