TFSF边界

TFSF边界:为了引入平面波做源(没有TFSF边界的话会往两边跑 有TFSF边界的话会只往一边跑),该边界处在 E与 H 之间 并不是恰好等于 N 或者 N+1/2 之类的值;(矩阵中的维度怎么对应,源放置)

二维里面加了散射体 会朝着 左右前后 4个方向有值,二维的是在4条边上修正,
三维里面加了散射体会朝着 上下左右前后 6个方向有值,三维的是在6个面上修正,

修正值是 重新模拟一个一维的FDTD的场,在某一点中加入源(??什么源都可以么),在散射场边界的值涉及到总场时 用总场的值减去该修正值(作为散射场),在总场更新时的值涉及到散射场时,需要散射场加上该修正值(作为入射场),修正值是看哪个场分量的迭代与源相关(体会)

2022.04.01补充
二维通过总场散射场边界条件加入平面波的途径是:先由一维FDTD(激励空间)产生时域步进的平面电磁波电磁场,再将此平面电磁波电磁场“复制”到二维 总场-散射场边界,一维二维总场散射场边界时间步长 大小均取相等,复制过程仅仅用到 空间矢量投影和插值计算。

三维通过总场散射场边界条件加入平面波的途径是:先由一维FDTD(激励空间)产生时域步进的平面电磁波电磁场,再将此平面电磁波电磁场“复制”到三维 总场-散射场边界,一维三维总场散射场边界时间步长 大小均取相等,复制过程仅仅用到 空间矢量投影和插值计算。

关于 平面波源的传播 :三个分量为2维的情况????? 比如TM波–Ez Hx H y实际上Hy的场分量值非常小可以忽略 由Ez×Hx 叉乘定传播方向即为y方向,Ez(x,y)相当于只和 x y方向的值有关系 所以是一个二维的,它和Ez(x,y,z)不一样 ,(一个是三维,一个二维 好好体会 还没透)
如果为点源直接加上一个修正值即可两个分量为2维的 Ez Hx
散射场内的EZ 更新会用到 总场里的HX = 入射hx+散射hx
但是只只知道总场HX 所以需要 总场HX减去入射hx(修正值) 然后用于更新 散射场EZ
%一个用稳定常数描述系数 在【Q+1/2】处无电场 用【Q+1】与【Q】处电场平均值得到
%在【Q】处无磁场,用【Q+1/2】与【Q-1/2】处磁场平均值得到–

只在[firstX-1,firstY:1:lastY] [4,5-75]这一根线上修正

正常场的更新 边界上更新的场值 全局的 然后进行正常的迭代

for mm=2:1:SizeX-1
        for nn=2:1:SizeY-1
            Ez(mm, nn) = Ceze(mm, nn) * Ez(mm, nn) +...
                Cezh(mm, nn) * ((Hy(mm, nn) - Hy(mm - 1, nn)) -...
                (Hx(mm, nn) - Hx(mm, nn - 1)));
        end
    end 

设置参数
置一维的电场和磁场更新系数 即修正项—分为两个区 一个是正常迭代 一个是在损耗层迭代 两者迭代参数不一样 所以可以只写一个更新方程 在不同范围内限定迭代参数
程序书写流程

  1. 初始化场值为0
  2. 为二维场值设置更新参数(先全部更新 再在四条边界上加修正值更新)
  3. Chxh–1 Chxe–含有时间参数[75,74]—Hx的更新
    Chyh–1 Chye–含有时间参数 [74,75]—Hy的更新
  4. 加散射体(pec金属腔)
  5. 在网格区域(总场 散射场 TFSF边界)进行正常迭代
  6. 先进行全部区域的 HxHy迭代
  7. 修正Hy的左右TFSF边界 两条线
    修正Hx的上下TFSF边界 两条线
  8. 仿真修正值 模拟 一维 理想(什么都不加)的E H演化,
  9. 加激励源–修正值上
  10. 修正Ez的左右TFSF边界 两条线
  11. 全区域内 正常更新Ez
  12. ABC mur边界条件
  13. 一维电场传播的波动方程(为计算区域边界节点提供递推方程) 分解为两个算子
  14. 程序中产生TFSF的一维场设置,注意这些放在整体更新以后
Ez1D=zeros(1,SizeX+NLOSS);%initial field value
Hy1D=zeros(1,SizeX+NLOSS);

 % 沿左边缘修正 Hy
 %由于左边缘的 hy 更新使用总场中的值,因此减入射场。
 % 仅在 [firstX-1,firstY:1:lastY] [4,5-75] 行上正确(TFST 的左边距)
  
mm=firstX-1;
for nn=firstY:1:lastY
    Hy(mm,nn)=Hy(mm,nn)-Chye(mm,nn)*Ez1D(mm+1);
end

% 更新一维磁场
%不同区域的参数在这里更新。 参数设置 

    for mm=1:SizeX+NLOSS-1
        Hy1D(mm)=Chyh1D(mm)*Hy1D(mm)+Chye1D(mm)*(Ez1D(mm+1)-Ez1D(mm));
    end
    
    % 更新一维电场
    for mm=2:SizeX+NLOSS-1
    Ez1D(mm)=Ceze1D(mm)*Ez1D(mm)+Cezh1D(mm)*(Hy1D(mm)-Hy1D(mm-1));
    end
    
    %% 
    %高斯源
    arg = pi * ((Cdtds1D * Time - 0) / ppw - 1.0);
    arg = arg * arg;
    Ez1D(1)=(1.0 - 2.0 * arg) * exp(-arg);
    
    %沿左边缘的正确 Ez 场
     %[firstX,firstY:1:lastY] [5,5-75] 
    mm=firstX;
    for nn=firstY:1:lastY
        Ez(mm,nn)=Ez(mm,nn)-Cezh(mm,nn)*Hy1D(mm-1);
    end

 **需要注意的点**
 1. 假设Ez不是合适的传播方程的解 传播速度不严格为 作用在场的传播算子产生一个近于0 的数字,再次作用他时 误差应该更小--近于真实值
 2. 吸收边界条件依赖于 内部相邻电场“将来”的值 ,所以将来场值必须在 网格边界点更新之前更新
 3. 一旦场更新 过去的值就会被覆盖 所以要储存网格两端相邻节点的 “过去”值 在下一次调用时就会成为过去
 4. 此方程需要  q+1 时间步上 两个内部节点的值(做更新时可以用 不需要储存) 以及 边界节点和这两个内部节点在 q q-1上的值 即3个空间位置与2个时间步上的
 5. 计算域每端一个
 6. 左边是硬线源,右边放损耗层,相当于模拟半无限大空间,而且左边的空间也是有限的 也传不过去




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值