• Python和Matplotlib电磁一维二维三维模拟


    自由空间中传播的脉冲一维模拟

    自由空间的时间相关麦克斯韦旋度方程为

    ∂ E ∂ t = 1 ε 0 ∇ × H ∂ H ∂ t = − 1 μ 0 ∇ × E .

    Et=1ε0×HHt=1μ0×E." role="presentation" style="position: relative;">Et=1ε0×HHt=1μ0×E.
    tEtH=ε01×H=μ01×E.

    E 和 H 是三个维度的向量,因此,一般来说,等式 (1.1a) 和 (1.1b) 分别代表三个方程。 我们将从仅使用 Ex 和 Hy 的简单一维案例开始,因此 等式(1.1a) 和 (1.1b) 变为

    ∂ E x ∂ t = − 1 ε 0 ∂ H y ∂ z , ∂ H y ∂ t = − 1 μ 0 ∂ E x ∂ z .

    Ext=1ε0Hyz,Hyt=1μ0Exz." role="presentation" style="position: relative;">Ext=1ε0Hyz,Hyt=1μ0Exz.
    tEx=ε01zHy,tHy=μ01zEx.

    这些是沿z方向行驶的平面波的方程,其电场在X方向上定向,并以y方向定向磁场。

    对时间和空间导数进行中心差分近似,给出

    E x n + 1 / 2 ( k ) − E x n − 1 / 2 ( k ) Δ t = − 1 ε 0 H y n ( k + 1 2 ) − H y n ( k − 1 2 ) Δ x H y n + 1 ( k + 1 2 ) − H y n ( k + 1 2 ) Δ t = − 1 μ 0 E x n + 1 / 2 ( k + 1 ) − E x n + 1 / 2 ( k ) Δ x

    Exn+1/2(k)Exn1/2(k)Δt=1ε0Hyn(k+12)Hyn(k12)ΔxHyn+1(k+12)Hyn(k+12)Δt=1μ0Exn+1/2(k+1)Exn+1/2(k)Δx" role="presentation" style="position: relative;">Exn+1/2(k)Exn1/2(k)Δt=1ε0Hyn(k+12)Hyn(k12)ΔxHyn+1(k+12)Hyn(k+12)Δt=1μ0Exn+1/2(k+1)Exn+1/2(k)Δx
    ΔtExn+1/2(k)Exn1/2(k)ΔtHyn+1(k+21)Hyn(k+21)=ε01ΔxHyn(k+21)Hyn(k21)=μ01ΔxExn+1/2(k+1)Exn+1/2(k)

    代码模拟

    import numpy as np
    from math import exp
    from matplotlib import pyplot as plt
    
    ke = 200
    ex = np.zeros(ke)
    hy = np.zeros(ke)
    
    # Pulse parameters
    kc = int(ke / 2)
    t0 = 40
    spread = 12
    
    nsteps = 100
    
    # Main FDTD Loop
    for time_step in range(1, nsteps + 1):
    
        # Calculate the Ex field
        for k in range(1, ke):
            ex[k] = ex[k] + 0.5 * (hy[k - 1] - hy[k])
    
        # Put a Gaussian pulse in the middle
        pulse = exp(-0.5 * ((t0 - time_step) / spread) ** 2)
        ex[kc] = pulse
    
        # Calculate the Hy field
        for k in range(ke - 1):
            hy[k] = hy[k] + 0.5 * (ex[k] - ex[k + 1])
    
    # Plot the outputs as shown in Fig. 1.2
    plt.rcParams['font.size'] = 12
    plt.figure(figsize=(8, 3.5))
    
    plt.subplot(212)
    plt.plot(hy, color='k', linewidth=1)
    plt.ylabel('H$_y$', fontsize='14')
    plt.xlabel('FDTD cells')
    plt.xticks(np.arange(0, 201, step=20))
    plt.xlim(0, 200)
    plt.yticks(np.arange(-1, 1.2, step=1))
    plt.ylim(-1.2, 1.2)
    
    plt.subplots_adjust(bottom=0.2, hspace=0.45)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    通量密度的一维模拟

    横向电磁二维模拟

    矢量场电磁三维模拟

    环形相控阵热疗模拟

    源代码

    参阅 - 亚图跨际

  • 相关阅读:
    P1952 火星上的加法运算
    Abbexa丨Abbexaα黑色素细胞刺激素 (aMSH) 蛋白方案
    直播岗位认知篇
    Vue中的计算属性和方法有什么区别?
    深入理解Java Stream流
    数字档案馆实施方案需要考虑哪些因素
    Allegro如何将丝印文字Change到任意层面操作指导
    VLSI 半定制设计方法 与 全定制设计方法【VLSI】
    03【MyBatis参数深入】
    大模型Tuning分类
  • 原文地址:https://blog.csdn.net/jiyotin/article/details/125898728