FDTD仿真、解决微环透射率大于1 T大于1的问题

仿真结果中,T值大于1

官网上的解释:https://optics.ansys.com/hc/en-us/articles/12614264530323-Transmission-Results-Greater-Than-One

可能的问题

1.模式计算错误,更改MODE EXPANSION 和 SOURSE里面的模式

需要在红框处手动更改模式为TE 模  TM模,或者select mode 

2.若谱图在1周围有震荡,可能是产生反射,mesh设置过大,如图选择,数值改为0.005测试即可

3.对应得Mode expansion 和DFTMonitor 没有设置在相同坐标,

monitor的P需要和MODE expansion进行重叠积分得到T,从而实现对入射波P进行比较

4.光源不要接触到边界

5.仿真时间不够,未达到稳态,调整为20000fs尝试

  • 0
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的二维亚网格TE波FDTD代码的示例: ```python import numpy as np import matplotlib.pyplot as plt # 定义常数 c = 3e8 # 光速 dx = 1e-3 # 空间步长 dt = dx / (2 * c) # 时间步长 t_end = 2e-9 # 模拟结束时间 freq = 10e9 # 输入脉冲频率 # 定义计算区域大小 size_x = 200 # x方向长度 size_y = 200 # y方向长度 # 定义亚网格参数 m = 2 n = 2 # 定义计算区域中心 center_x = size_x / 2 center_y = size_y / 2 # 定义输入脉冲 def gaussian_pulse(t, freq): return np.exp(-0.5 * ((t - 1 / freq * 5) / (1 / freq * 0.5)) ** 2) * np.cos(2 * np.pi * freq * t) # 初始化电场和磁场 ez = np.zeros((size_x, size_y)) hx = np.zeros((size_x, size_y)) hy = np.zeros((size_x, size_y)) # 开始FDTD模拟 for t in np.arange(0, t_end, dt): # 更新磁场 for i in range(size_x - 1): for j in range(size_y - 1): hx[i, j] -= (ez[i, j+1] - ez[i, j]) / (n * dx) hy[i, j] += (ez[i+1, j] - ez[i, j]) / (m * dx) # 更新电场 for i in range(1, size_x - 1): for j in range(1, size_y - 1): ez[i, j] += (hy[i, j] - hy[i-1, j]) / (n * dx) - (hx[i, j] - hx[i, j-1]) / (m * dx) # 在计算区域中心加入高斯脉冲 ez[int(center_x), int(center_y)] += gaussian_pulse(t, freq) # 绘图 plt.imshow(ez, cmap="jet", origin="lower") plt.colorbar() plt.show() ``` 该代码使用了numpy和matplotlib库,其中定义了常数、计算区域大小、亚网格参数、输入脉冲和初始电场和磁场。在模拟过程中,先更新磁场,再更新电场,并在计算区域中心加入高斯脉冲。最后,使用matplotlib库将结果进行可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值