2. 麦克斯韦方程组与Yee网格离散
FDTD(Finite-Difference Time-Domain,时域有限差分)之所以能成为光子器件仿真的主力方法,核心在于它把麦克斯韦旋度方程直接搬到离散网格上,用“跳蛙式”时间步进一步步推进电磁场。理解这一节,关键不是背公式,而是搞清楚三件事:方程怎么离散、场量放在网格的什么位置、时间步长受什么限制。这三件事决定了后续所有仿真是否可信。
一、从麦克斯韦旋度方程到离散更新式
在无源、各向同性、非色散介质中,麦克斯韦旋度方程可写为:
∂H/∂t = -(1/μ) ∇×E
∂E/∂t = (1/ε) ∇×H - (σ/ε) E
FDTD 的做法是对空间和时间都做中心差分。以一维情况为例,电场只有 Ez 分量、磁场只有 Hy 分量,方程退化为:
∂Ez/∂t = -(1/ε) ∂Hy/∂x
∂Hy/∂t = -(1/μ) ∂Ez/∂x
对时间用中心差分、对空间用中心差分,得到跳蛙格式:
Hy[i]^(n+1/2) = Hy[i]^(n-1/2) - (Δt/(μΔx))·(Ez[i+1]^n - Ez[i]^n)
Ez[i]^(n+1) = Ez[i]^n - (Δt/(εΔx))·(Hy[i]^(n+1/2) - Hy[i-1]^(n+1/2))
注意两个细节:磁场在 n±1/2 时刻更新,电场在整数 n 时刻更新,二者在时间上相差半个步长;空间上 Ez 与 Hy 也相差半个网格。这种“时间半步、空间半格”的交错,正是 Yee 网格的精髓,它让中心差分自然满足旋度方程的耦合关系,无需额外插值。
二、Yee 网格:电场与磁场的空间交错
三维 Yee 元胞中,每个电场分量位于所在棱的中点,每个磁场分量位于所在面的中心。以元胞边长 Δx、Δy、Δz 为例:
- Ex 位于 (i+1/2, j, k),沿 x 方向;
- Ey 位于 (i, j+1/2, k),沿 y 方向;
- Ez 位于 (i, j, k+1/2),沿 z 方向;
- Hx 位于 (i, j+1/2, k+1/2),沿 x 方向;
- Hy 位于 (i+1/2, j, k+1/2),沿 y 方向;
- Hz 位于 (i+1/2, j+1/2, k),沿 z 方向。
这种布局带来两个直接好处:一是每个 E 分量周围恰好有四个 H 分量构成环路,可直接计算旋度;二是 E 和 H 的更新互不重叠,可交替推进,天然适合显式时间步进。在光子器件中,这意味着波导、微腔、光栅等结构只需按材料分布设置 ε(i,j,k),网格本身无需随结构变形。
三、时间步进格式与实现要点
实际编程时,通常按以下顺序组织主循环:
- 用当前 E 场更新所有 H 分量(H 推进半个时间步);
- 施加磁场边界条件(如 PEC、PML);
- 用更新后的 H 场更新所有 E 分量(E 推进一个整时间步);
- 施加电场边界条件与激励源;
- 记录观测点场值,进入下一轮。
以二维 TM 模(Ez、Hx、Hy)为例,更新式可写为:
Hx[i,j] = Hx[i,j] - (dt/(mu*dy))*(Ez[i,j+1] - Ez[i,j])
Hy[i,j] = Hy[i,j] + (dt/(mu*dx))*(Ez[i+1,j] - Ez[i,j])
Ez[i,j] = Ez[i,j] + (dt/eps)*( (Hy[i,j]-Hy[i-1,j])/dx - (Hx[i,j]-Hx[i,j-1])/dy )
这里 dx、dy 为空间步长,dt 为时间步长,mu、eps 为材料参数。若存在电导率 σ,还需在 Ez 更新中加入衰减项 (1 - σdt/(2ε))/(1 + σdt/(2ε))。在光子器件中,金属、有损介质或增益介质都通过这一项体现。
四、数值稳定性条件:CFL 判据
显式 FDTD 的时间步长不能任意取大,否则数值解会指数发散。三维情况下必须满足 Courant-Friedrichs-Lewy(CFL)条件:
dt ≤ 1 / (c · sqrt(1/dx² + 1/dy² + 1/dz²))
其中 c 为介质中最大光速。若网格均匀,dx=dy=dz=Δ,则简化为 dt ≤ Δ/(c√3)。二维时系数为 √2,一维时为 1。工程上通常取理论极限的 0.9~0.99 倍,例如 Δ=20 nm、真空波长 1.55 μm 时,c≈3×10⁸ m/s,三维均匀网格下 dt ≤ 20e-9/(3e8×1.732) ≈ 3.85×10⁻¹⁷ s,实际可取 dt ≈ 3.5×10⁻¹⁷ s。
常见误区:把 dt 取得过大会导致场值迅速发散;把 dt 取得过小则仿真时间成倍增加。若使用非均匀网格,必须按最小网格尺寸计算 CFL 上限。此外,PML 吸收层内若网格拉伸过大,也会引入不稳定,需控制相邻网格增长率。
五、网格色散与精度权衡
即使满足 CFL 条件,FDTD 仍存在数值色散:不同频率的波在网格中传播速度略有差异,导致脉冲展宽或相位误差。通常要求每波长至少 10~20 个网格点。以 1.55 μm 波长、硅波导有效折射率约 2.4 为例,介质中波长约 646 nm,若取 Δ=20 nm,则每波长约 32 个点,精度较好;若取 Δ=50 nm,则仅约 13 个点,色散误差明显增大。因此,在光子晶体、微环等对相位敏感的结构中,应优先加密网格,而不是盲目增大时间步长。
实践建议:先用粗网格试算,观察场分布是否合理、是否出现非物理振荡;再逐步加密并检查结果收敛性。若两次网格下透射谱峰值位置差异小于 1%,可认为网格已足够。时间步长则始终按 CFL 条件自动计算,不要手动放大。
总结来看,Yee 网格用空间交错换取二阶精度,跳蛙格式用时间交错换取显式推进,CFL 条件则划定了稳定边界。三者共同构成 FDTD 的骨架。后续无论是设置波导端口、PML 边界还是色散材料,都建立在这一离散框架之上。