第二章:电磁理论基础——麦克斯韦方程组、本征值问题、布洛赫定理与平面波展开法(PWE)原理

做光子晶体仿真,说白了就是跟光波在周期性结构里的行为打交道。你想想看,光在普通介质里传播,我们拿麦克斯韦方程组就能搞定。但一旦介质变成周期排列,事情就变得有意思了——光会像电子在晶体里一样,形成能带、出现带隙。这一章,我就带你把这些基础理论捋一遍。

核心要点:光子晶体能带计算,本质上是求解周期性介质中的麦克斯韦方程组,将其转化为本征值问题,再利用布洛赫定理简化计算,最后用平面波展开法(PWE)数值求解。

2.1 麦克斯韦方程组——一切仿真工作的起点

我个人习惯,每次做光子晶体仿真前,都会先把麦克斯韦方程组在脑子里过一遍。不是因为我不熟,而是因为所有后续推导都从这里出发。

在无源、非磁性介质中,麦克斯韦方程组可以写成:

∇ · D = 0          (高斯定律,无自由电荷)
∇ · B = 0          (高斯磁定律,无磁单极子)
∇ × E = -∂B/∂t    (法拉第电磁感应定律)
∇ × H = ∂D/∂t     (安培定律,无传导电流)

其中,D = ε₀ε(r)E,B = μ₀H。这里的ε(r)是相对介电常数,它是空间位置的函数——这正是光子晶体的关键所在。

嗯,这里要注意:我们假设介质是非磁性的(μ=1),这在大多数光子晶体材料中成立。我在项目中遇到过有人把磁性材料当普通介质算,结果能带图完全对不上,折腾了两天才发现是材料参数设错了。

2.2 从麦克斯韦方程组到本征值问题

为什么要转成本征值问题?说白了,我们想知道的是:在给定的周期性结构中,哪些频率的光可以传播,哪些不行。这本质上就是一个本征值问题。

对上面两个旋度方程做时间简谐假设(E(r,t) = E(r)e^{iωt},H(r,t) = H(r)e^{iωt}),然后联立消去E,可以得到关于H的方程:

∇ × [ (1/ε(r)) ∇ × H(r) ] = (ω/c)² H(r)

这就是光子晶体的主方程。它是一个本征值问题:

  • 算符:Θ = ∇ × [ (1/ε(r)) ∇ × ]
  • 本征值:λ = (ω/c)²
  • 本征函数:H(r)

你想想看,这个方程跟量子力学里的薛定谔方程很像,只不过这里的算符是旋度算符,而不是拉普拉斯算符。我刚开始学的时候,就靠这个类比来理解,上手快很多。

我的经验:实际仿真时,我们通常求解H场而不是E场。为什么?因为H场在介电常数突变处是连续的,数值稳定性更好。我曾经试过直接解E场方程,结果在介质边界处出现了虚假振荡,折腾了好久才找到原因。

2.3 布洛赫定理——周期结构的数学语言

既然介质是周期排列的,那场也应该是周期性的——只不过要加一个相位因子。这就是布洛赫定理的核心思想。

对于周期为a的结构,布洛赫定理告诉我们:

H(r) = e^{ik·r} u(r)

其中,u(r)是周期函数,满足u(r + a) = u(r)。k是波矢,它决定了光波在周期结构中的传播特性。

把布洛赫形式的H代入主方程,得到:

(∇ + ik) × [ (1/ε(r)) (∇ + ik) × u(r) ] = (ω/c)² u(r)

这个方程对每个k都要解一次。所以光子晶体的能带图,横坐标是k(沿着布里渊区边界走),纵坐标是ω——这就是我们常说的能带结构。

我记得第一次看到能带图时,心里想:这不就是给光造了个"禁飞区"吗?频率落在带隙里的光,在晶体里是传不出去的。

避坑指南:我曾经犯过一个低级错误——只计算了布里渊区高对称点上的k值,以为这样就能得到完整的能带图。结果漏掉了一个重要的带隙。后来才意识到,有些带隙出现在高对称点之间。所以,一定要沿着整个布里渊区边界扫过去,别偷懒。

2.4 平面波展开法(PWE)——把问题交给计算机

有了主方程和布洛赫定理,接下来就是怎么数值求解了。平面波展开法(PWE)是目前最常用的方法之一。

它的思路很直接:既然介电常数ε(r)是周期函数,场也是周期函数(乘上布洛赫因子),那干脆把它们都展开成傅里叶级数:

1/ε(r) = Σ_G κ(G) e^{iG·r}
u(r) = Σ_G u(G) e^{iG·r}

其中G是倒格矢。把这些展开代入主方程,经过一番推导(嗯,这一步确实有点繁琐,但逻辑很清晰),最终得到一个矩阵本征值问题:

Σ_{G'} [ (k+G)×(k+G')× κ(G-G') ] · u(G') = (ω/c)² u(G)

这个矩阵的维度取决于你用了多少个平面波。一般来说,平面波数量越多,结果越精确,但计算量也越大。

实用建议:做PWE计算时,平面波数量有个经验值——对于二维光子晶体,取N=100~200个平面波通常就够了;三维的话,N=500~1000。我一般会先算一个粗网格(少平面波)看看趋势,再加密验证关键区域。这样既快又准。

2.5 知识体系总览

下面这张图,是我自己总结的本章知识脉络。每次做仿真前,我都会按这个流程走一遍:

光子晶体能带计算知识体系 麦克斯韦方程组 本征值问题(主方程) 布洛赫定理(周期结构) 平面波展开法(PWE) 能带结构(ω-k关系) 无源、非磁性介质 求解H场更稳定 沿布里渊区边界扫描 N=100~1000个平面波

2.6 本章小结

这一章的内容,说白了就是一条线:从麦克斯韦方程组出发,经过本征值问题的转化,利用布洛赫定理处理周期性,最后用PWE方法数值求解。每一步都有它的物理意义和数值考量。

我个人觉得,理解这些理论最好的方式,就是一边看公式一边动手算。哪怕只是算一个最简单的一维光子晶体,也能让你对能带、带隙这些概念有直观的感受。下一章,我们就开始动手——用Python实现一个完整的PWE能带计算程序。

小技巧:如果你刚开始接触这些理论,建议先别急着看三维情况。从一维开始,把每个公式的物理意义搞清楚,再扩展到二维、三维。我当年就是这么过来的,一步一个脚印,反而比一开始就啃三维论文要快得多。

专注资料整理