fdtd二维的详细解说(一)

先列出理论 

对于二维物质,在z向上是无变化的,可以有如下结论

1.假设激励源在z向也无变换,因此所有关于z的偏导都为0

2.再假设无自由电流和电荷

上面可以出现这样两个循环

\(E_z \Longrightarrow H_x  H_y\Longrightarrow  E_z \)   TM

\(H_z \Longrightarrow E_x  E_y \Longrightarrow  H_z \)   TE

 第二个循环对应的方程如下:

 \(\frac{\partial E_x}{\partial t}=\frac{1}{\epsilon}\frac{\partial H_z}{ \partial y}\) 

 \(\frac{\partial E_y}{\partial t}=-\frac{1}{\epsilon}\frac{\partial H_z}{ \partial x}\)

\(\frac{\partial H_z}{\partial t}=\frac{1}{\mu}\left(\frac{\partial E_x}{ \partial y}-\frac{\partial E_y}{ \partial x}\right)\)

差分过程可以用下图来说明,O代表H_z,×代表E,两个H可以得到一个E,而反过来四个E又可以得到一个H,如此循环不断前进

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的二维FDTD代码示例,你可以根据需要进行修改和调整: ```python import numpy as np import matplotlib.pyplot as plt # 定义常数 c0 = 299792458 # 真空的光速 eps0 = 8.85e-12 # 真空的介电常数 mu0 = 1.26e-6 # 真空的磁导率 # 定义仿真空间大小和时间步长 Lx = 0.1 # x方向长度 Ly = 0.1 # y方向长度 dx = 1e-3 # 空间步长 dy = 1e-3 dt = dx / (2 * c0) # 时间步长 # 定义仿真区域的网格数和电场/磁场数组 nx = int(Lx / dx) ny = int(Ly / dy) Ez = np.zeros((nx, ny)) Hx = np.zeros((nx, ny)) Hy = np.zeros((nx, ny)) # 定义波源位置 x0 = int(nx / 2) y0 = int(ny / 2) # 定义模拟总时间和波源频率 T = 1e-8 f0 = 1e9 wavelength = c0 / f0 # 定义计算电场和磁场的函数 def updateE(): for i in range(1, nx - 1): for j in range(1, ny - 1): Ez[i, j] += (dt / eps0) * ((Hy[i, j] - Hy[i - 1, j]) / dx - (Hx[i, j] - Hx[i, j - 1]) / dy) def updateH(): for i in range(nx - 1): for j in range(ny - 1): Hx[i, j] += (dt / mu0) * (Ez[i, j + 1] - Ez[i, j]) / dy Hy[i, j] += (dt / mu0) * (Ez[i + 1, j] - Ez[i, j]) / dx # 定义主程序 for n in range(int(T / dt)): # 更新电场和磁场 updateE() updateH() # 添加高斯脉冲作为波源 Ez[x0, y0] += np.exp(-((n * dt - 1.5 * wavelength / c0) / (0.1 * wavelength / c0)) ** 2) # 绘制仿真结果 plt.imshow(np.transpose(Ez), cmap='RdBu', extent=[0, Lx, 0, Ly], interpolation='spline36') plt.colorbar() plt.xlabel('x (m)') plt.ylabel('y (m)') plt.show() ``` 上述代码实现了一个简单的二维FDTD模拟,其通过高斯脉冲作为波源来激发电磁波的传播,最终绘制出了仿真结果。你可以根据需要进行修改和调整,以适应不同的应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值