#MATLAB计算同轴谐振腔电场、磁场(基于FDTD算法)内部介质填充空气采用PEC边界。 #程序包含详细注释本人在2020a版本均可运行。同轴谐振腔这玩意儿在微波工程里可是个经典模型今天咱们用MATLAB给它来个FDTD暴力破解。先声明啊这个代码在2020a版本亲测能跑你要是用新版反而报错的话...那可不赖我手动狗头先搞个最简单的二维柱坐标模型为啥不用三维别问问就是电脑跑不起网格划分咱们用最朴素的Yee网格% 几何参数 a 0.05; % 内导体半径 b 0.15; % 外导体半径 h 0.3; % 腔体高度 dr 0.005; % 径向步长 dz 0.005; % 轴向步长这里有个坑要注意——PEC边界处理。咱们直接暴力置零就行简单粗暴% 边界处理函数 function E applyPEC(E, isPEC) E(isPEC) 0; % 遇到PEC直接归零 end主循环才是重头戏时间步进的关键在电场和磁场的交替更新。看这段核心代码for n 1:maxTime % 磁场更新注意这里的1/2步偏移 H_phi H_phi dt/(mu0) * (diff(E_r,1,2)/dr - diff(E_z,1,1)/dz); % 电场更新 E_r(2:end-1,:) E_r(2:end-1,:) dt/(eps0) * (diff(H_phi,1,1)/dz); E_z(:,2:end-1) E_z(:,2:end-1) dt/(eps0) * (1/r(2:end-1)).*diff(r.*H_phi,1,2)/dr); % 边界处理 E_r applyPEC(E_r, pecMask_r); E_z applyPEC(E_z, pecMask_z); end注意看电场更新的第二项这个1/r项就是柱坐标系的特色产物。之前有萌新把这忘了结果算出来的场分布跟麻花似的...#MATLAB计算同轴谐振腔电场、磁场(基于FDTD算法)内部介质填充空气采用PEC边界。 #程序包含详细注释本人在2020a版本均可运行。跑完仿真总要看看结果吧可视化这块咱得整点专业的quiver(rPlot, zPlot, Er_plot, Ez_plot, AutoScaleFactor, 3) hold on contour(rMesh, zMesh, sqrt(Er.^2 Ez.^2), 20) title(电场分布箭头方向等高线强度)这种箭头叠加等高线的操作能同时看清场的方向和强度分布。记得调整AutoScaleFactor参数不然箭头会挤成刺猬。最后说个血泪教训——CFL条件时间步长dt必须满足dt 0.99 / (c0*sqrt(1/dr^2 1/dz^2)); % 稳定性条件那个0.99可不是随便写的之前试过0.999结果数值振荡直接上天。想要动画效果流畅把maxTime设到5000步以上不过小心你的风扇起飞。完整代码我扔GitHub了地址在评论区跑完记得看看驻波波形对不对。哪天要是发现基模频率和理论值差太多...嗯大概率是你尺寸参数输错了别问我怎么知道的
#MATLAB计算同轴谐振腔电场、磁场(基于FDTD算法),内部介质填充空气,采用PEC边界...
#MATLAB计算同轴谐振腔电场、磁场(基于FDTD算法)内部介质填充空气采用PEC边界。 #程序包含详细注释本人在2020a版本均可运行。同轴谐振腔这玩意儿在微波工程里可是个经典模型今天咱们用MATLAB给它来个FDTD暴力破解。先声明啊这个代码在2020a版本亲测能跑你要是用新版反而报错的话...那可不赖我手动狗头先搞个最简单的二维柱坐标模型为啥不用三维别问问就是电脑跑不起网格划分咱们用最朴素的Yee网格% 几何参数 a 0.05; % 内导体半径 b 0.15; % 外导体半径 h 0.3; % 腔体高度 dr 0.005; % 径向步长 dz 0.005; % 轴向步长这里有个坑要注意——PEC边界处理。咱们直接暴力置零就行简单粗暴% 边界处理函数 function E applyPEC(E, isPEC) E(isPEC) 0; % 遇到PEC直接归零 end主循环才是重头戏时间步进的关键在电场和磁场的交替更新。看这段核心代码for n 1:maxTime % 磁场更新注意这里的1/2步偏移 H_phi H_phi dt/(mu0) * (diff(E_r,1,2)/dr - diff(E_z,1,1)/dz); % 电场更新 E_r(2:end-1,:) E_r(2:end-1,:) dt/(eps0) * (diff(H_phi,1,1)/dz); E_z(:,2:end-1) E_z(:,2:end-1) dt/(eps0) * (1/r(2:end-1)).*diff(r.*H_phi,1,2)/dr); % 边界处理 E_r applyPEC(E_r, pecMask_r); E_z applyPEC(E_z, pecMask_z); end注意看电场更新的第二项这个1/r项就是柱坐标系的特色产物。之前有萌新把这忘了结果算出来的场分布跟麻花似的...#MATLAB计算同轴谐振腔电场、磁场(基于FDTD算法)内部介质填充空气采用PEC边界。 #程序包含详细注释本人在2020a版本均可运行。跑完仿真总要看看结果吧可视化这块咱得整点专业的quiver(rPlot, zPlot, Er_plot, Ez_plot, AutoScaleFactor, 3) hold on contour(rMesh, zMesh, sqrt(Er.^2 Ez.^2), 20) title(电场分布箭头方向等高线强度)这种箭头叠加等高线的操作能同时看清场的方向和强度分布。记得调整AutoScaleFactor参数不然箭头会挤成刺猬。最后说个血泪教训——CFL条件时间步长dt必须满足dt 0.99 / (c0*sqrt(1/dr^2 1/dz^2)); % 稳定性条件那个0.99可不是随便写的之前试过0.999结果数值振荡直接上天。想要动画效果流畅把maxTime设到5000步以上不过小心你的风扇起飞。完整代码我扔GitHub了地址在评论区跑完记得看看驻波波形对不对。哪天要是发现基模频率和理论值差太多...嗯大概率是你尺寸参数输错了别问我怎么知道的