☰
Rsoft仿真四方晶格光子晶体:TE与TM模式能带分析
2026/10/13 14:14:34 网站建设 项目流程

1. 四方晶格光子晶体到底在仿真什么

1.1 什么是四方晶格二维光子晶体

先把这个名词拆开说清楚。二维光子晶体是指在平面上把介电常数做周期性排列,第三个方向(通常叫z方向)保持结构不变,可以理解为“无限高”的柱状结构。完整的表述就是:沿x和y方向周期变化,沿z方向均匀延伸的介质结构。这个周期排列的“积木”可以是介质柱,也可以是介质背景里的空气孔,两者物理效果差别很大,后面会展开说。

四方晶格就是最常见的正方形周期排列结构,x方向和y方向的晶格常数都是a,换句话说你从z方向俯视下去,看到的是一张均匀的正方形网格。每个网格单元里放一根圆形介质柱,或者挖一个圆形空气孔,这就是典型的四方晶格二维光子晶体。它与三角晶格相比,带隙往往更难打开,带宽也更窄一些,但胜在结构规则、容易加工、也容易做参数化扫描,很多光纤传感和集成光学的前期验证工作都是从这种结构起步的。

再说“仿真”二字。光子晶体的核心物理效应是光子带隙——特定频率范围内的电磁波无法在晶体内部传播,这跟半导体里电子被禁带挡住是一个道理。周期性结构满足Bloch定理,电磁波的色散关系会重组成能带结构,带隙就是能带之间的空白频率区间。所以仿真要回答的不只是“光能不能过去”,而是要把频率范围、偏振模式、传播方向对应的透过率全部算出来,这样才能知道这个结构能做成什么器件、能工作在哪个波段。

有人可能会问,这玩意到底有什么用。具体到工程,二维光子晶体最常见的用途是做带隙型波导、微腔传感器和滤波器。从标题里的“TE与TM”就能看出,这个项目不仅要做能带分析,还要把两种偏振态分开研究,这是光子晶体仿真里最容易踩坑、也最容易被忽视的部分。

1.2 TE与TM两种偏振的本质差异

为什么要单独强调TE和TM?因为光子晶体带隙对偏振是极其敏感的。同一个结构,TE有带隙,TM很可能完全没有,反过来也一样。

先定义清楚。假设光在x-y平面内传播,z方向结构不变。TE模式下,电场矢量在x-y平面内,磁场沿z方向有分量;TM模式下,磁场在x-y平面内,电场沿z方向有分量。说白了,TE是电场“水平”振动,TM是电场“垂直”振动,两者面对的石英柱和空气界面不一样,边界条件的差异直接导致色散关系完全不同。

一个经常被忽略但又很重要的点:介质柱型四方晶格最容易在TE模式打开带隙,因为电场在介质柱内集中,容易形成米氏共振;反之,空气孔型四方晶格更容易在TM模式打开带隙,因为电场被排斥出空气孔,等效折射率对比增强,对TM波的约束更明显。我常跟人讲,先想清楚你要做TE器件还是TM器件,再决定用孔还是柱,这个先后顺序反了,后面所有参数扫描都是在浪费时间。

下面的表格把这两者的核心差异总结一下,方便对照参考:

对比项TE模式TM模式
非零场分量Ex、Ey、HzEz、Hx、Hy
电场分布特点电场在平面内,集中在高介电区电场垂直平面,对孔结构敏感
圆柱型结构带隙容易打开,带宽较宽需要大填充率,带隙通常较窄
空气孔型结构带隙较难打开容易打开,带隙明显
典型应用线缺陷波导、分束器微腔、传感器、激光器

还有一个概念需要澄清:所谓的“TE/TM仿真”不是说软件里勾一下TE就自动算完,而是要在模型里显式地指定激励源的偏振方向,并且在能带计算时分别求解对应的本征方程。Rsoft里BandSolve对这两个模式是分开处理的,后面会详细讲操作细节。

2. Rsoft在光子晶体仿真里的定位与分工

2.1 BandSolve、FullWAVE与CAD环境的配合方式

Rsoft是一个集成度很高的光子学仿真套装,平时做二维光子晶体,我用得最多的就是三个模块:CAD绘图环境、BandSolve和FullWAVE。

CAD环境是整个仿真的前处理入口。你在里面画几何结构、定义材料、设置折射率分布,然后把它作为“结构文件”喂给后面的求解器。对光子晶体这种周期性很强的结构,CAD里通常只需要画一个单胞,然后用周期阵列或平移复制的方式铺开,这点比通用电磁仿真软件要方便很多。画圆柱、画方框、挖孔,都是很基础的操作,难点反而在于把参数变量挂到几何尺寸上,这样后面做扫描不用反复改图。

BandSolve负责能带计算,核心算法是平面波展开法。它把电磁场按平面波基展开,把麦克斯韦方程组化成特征值问题,直接解出每个波矢对应的本征频率。对一个周期结构来说,你只需要给出第一布里渊区内的高对称点路径(比如Γ-X-M-Γ),它就能沿路径逐点扫出色散关系,最终输出能带图。这套流程的原理不复杂,但收敛性、网格密度都很重要,BandSolve在设置里可以单独指定平面波截断数目和偏振模式。

FullWAVE则是时域有限差分求解器,用来做“真实感”验证。它不像BandSolve那样只算周期性单胞,而是把整个器件结构、光源、探测器和边界条件全部放进仿真区域里,在时间域上推进电磁场,最后给出透射谱、反射谱和场分布。能带图告诉你“理论上哪里不能传”,FullWAVE告诉你“实际上光怎么过去、怎么被反射”,两者一对照,结论才立得住。

用一句话概括分工:建模和结构参数用CAD搞定;物理本质和带隙位置找BandSolve;进入器件层验证用FullWAVE。不过这三个模块共用一个结构文件,也就是说你改一下CAD几何,能带和透射谱都要重新算,这就是参数化设计的基本循环。

2.2 为什么这种组合适合课题研究场景

如果你只是自己写平面波展开代码,能带能算,但透射谱、耦合效率这些更接近实验的问题就要另外写一堆求解器,工作量非常大。Rsoft的好处是能带和时域仿真在同一个工作流里衔接,单胞参数、材料折射率、网格设置都是共享的,省去了大量重复建模的时间。

当然,Rsoft也不是没有脾气。它的界面偏旧,很多设置项藏在深层菜单里,新手第一次打开容易找不到对应选项。而且它的材料库不像一些高频电磁软件那样自带丰富色散数据,很多时候需要手动输入折射率实部和虚部。但这些都属于使用习惯问题,用熟了效率反而高——尤其是参数扫描功能,真的比脚本化仿真省力很多。

还有一点要说明:Rsoft不是唯一能做光子晶体仿真的工具,有些团队也会用其他软件。但既然项目标题指定了Rsoft,下面所有步骤就都基于这个平台展开,里面讲的物理判据和网格收敛逻辑,换到别的软件也是通用的。

3. 搭建四方晶格仿真模型的关键细节

3.1 几何参数、材料参数怎么定

建模型之前,先明确一组核心参数:晶格常数a、介质柱或空气孔的半径r、背景介质折射率n_bg、柱体/孔道介质折射率n_rod。对四方晶格来说,还有一个很常用的无量纲量——填充率f = πr²/a²,它描述单位晶胞里被柱体占据的面积比例。

材料参数的取舍有个基本原则:折射率对比度越高,带隙越容易打开,带宽也越大。最常规的做法是空气背景(n=1.0)加硅柱(n≈3.45),这个组合在近红外波段透明、折射率差够大,带隙很可观。如果考虑后续实验加工,也可以用二氧化钛(折射率约2.4~2.6)或者氮化镓之类,但带隙会窄一些,参数容差也更紧。

我建议第一轮仿真把晶格常数归一化为a=1.0,所有长度都按a的比例定义,这样能带图的纵轴直接就是归一化频率a/λ,方便在不同设计之间迁移。比如你最后想工作在1550nm,以硅柱方格子为例,假设归一化带隙在0.28到0.36之间,那晶格常数就要反推成a≈0.434μm到0.558μm,这是一个非常常用的反算过程。

具体到半径扫描,我的习惯是保持a不变,把r/a从0.1扫到0.45,步长取0.05,先用二维能带计算快速筛出有带隙的区间,再在候选区间内加密步长。对圆柱型四方晶格,r/a太小(比如0.05)时几乎没有带隙,因为散射太弱;r/a接近0.45时晶格几何接近联通,带隙又会萎缩甚至消失。换句话说,带隙通常出现在中间某个填充率区间,盲目堆填充率不一定有好处。

下面给出一组可以直接作为起点的参数组合:

参数数值说明
晶格常数 a1.0 μm归一化基准,后续按a缩放
圆柱半径 r0.20 μm初始值,对应填充率0.126
背景折射率 n_bg1.0空气
圆柱折射率 n_rod3.45硅,忽略色散
仿真区域高度1.0 μm(或更高)视模式分布而定

提示:材料折射率如果不考虑色散,BandSolve计算速度会快很多,但要知道这适用于相对窄带的仿真范围。如果扫的波长跨过吸收边或材料色散明显的区间,就要把色散模型加回去,否则透射谱的峰位会偏。

3.2 网格精度、边界条件与仿真区域设置

这个环节决定了仿真结果可不可信。BandSolve基于平面波展开,它里面有一个网格密度参数,本质上对应平面波截断数。网格太粗,能带图会显得很“毛糙”,带边位置漂移;网格太密,算得慢,但对四方晶格这种简单几何来说,单胞内64×64左右就能得到比较平滑的结果,继续加密边际收益有限,全波仿真才是提速瓶颈。

FullWAVE是FDTD求解器,网格策略完全不同。你得按照“每个波长至少覆盖15~20个网格”的规则来估算dx,同时还要照顾柱体边界的平滑程度。具体到四方晶格,柱边界是圆弧,网格不够细时边界呈“锯齿”状,会产生数值散射,透射谱里会出现一些相位相关的伪峰。我通常把结构区域内网格设为a/40左右,并在圆柱边界处使用亚网格平滑,这样能兼顾速度和精度。

边界条件方面,BandSolve用的是Bloch周期边界,这是能带计算的前提,不需要额外设置PML。FullWAVE则一定要用完美匹配层吸收边界,PML的厚度和衰减系数如果设置不当,来自边界反射的信号会污染透射谱。我的经验是PML层数取8到12层,反射率衰减系数按默认值再微调,仿真区域边界到结构外沿至少留一个波长的距离,这样边界反射基本可以压到噪声级别。

另外要提一个很多新手会犯的错误:FullWAVE里仿真区域并不是越大越好。区域增大,网格总数按面积增长,内存和计算时间跟着涨,而且PML只负责吸收边界,并不消除结构内部的多次反射。所以仿真区域的尺寸要以“包住结构、留出激励和响应的空间”为准,不要无脑加宽。

4. 用BandSolve算TE与TM能带

4.1 从单胞建模到能带计算的完整链路

第一步是在CAD环境里建单胞。新建结构时选择二维结构,画一个边长为a的正方形背景层,再在中心画一个半径为r的圆形区域,填充材料分别设为空气和硅,这样一个最简单的圆柱型四方晶格单胞就建好了。如果你想算空气孔结构,只需要把圆心区域的材料设为空气、背景设为硅,方向反过来即可。

第二步是设置晶格属性。BandSolve里需要明确这是个正方形晶格,x和y方向的周期都是a,并指定高对称点路径。四方晶格第一布里渊区的高对称点是:Γ点坐标(0,0),X点坐标(0.5,0),M点坐标(0.5,0.5)。常规路径是Γ→X→M→Γ,有时候为了看更多细节,也可以在X→M之间加密取点。这里坐标的单位是倒格子基矢的倍数,不要写成物理长度,否则能带图路径会错。

第三步是选择偏振模式。BandSolve的求解设置里有极化选项,TE和TM分别对应不同的本征方程。一般流程是先算TE,保存结果,再切到TM重新算一遍,两条能带曲线叠加对比。有些小版本还支持一次勾选多个极化,但手动分开算更稳,因为两者的收敛特性不同,你可以独立调网格。

第四步是设置能带数量和网格密度。对二维光子晶体,能带数量取8~15条就够了,太多纯属浪费时间,重点看的只是带隙附近的前几条带。平面波网格密度我建议从40×40开始,收敛后再提到64×64验证带边移动量,如果两次计算带边频率漂移小于1%,基本可以认定收敛了。

下面是BandSolve里的一组合适默认值:

设置项推荐值备注
晶格类型Square四方格子
周期长度a, a两方向相同
高对称点路径Γ(0,0)-X(0.5,0)-M(0.5,0.5)-Γ(0,0)每段均匀取40~60点
能带数12够看带隙
网格密度64×64再加密用于收敛验证
极化模式TE / TM 分开算两组独立结果

全部设置完成后,直接跑求解,输出的是以波矢路径为横轴、归一化频率为纵轴的能带图。BandSolve也会把带隙的上下边界频率给出来,但这个数值是基于精确周期结构算得的,和后面FullWAVE的透射谱之间还要留一点转换余量。

4.2 能带图怎么读、带隙怎么找

拿到能带图,第一件事不是找哪条带好看,而是确认路径有没有折返、带有没有非物理交叉。四方晶格的能带在X和M点附近经常出现简并或近简并,如果看到两条带没有交叉就穿过彼此,多半是网格不够细导致能级劈裂被数值抹平了,这时候要加密网格再验一次。

读带隙的逻辑是:沿着某个k方向,如果相邻两条本征频率之间有一段空白,没有任何能带经过,这个频率区间就是这方向的带隙。如果所有方向在这个区间都有带隙,就是完整带隙,也叫全方向带隙。对四方晶格圆柱结构,第一带隙往往位于较低频带之间,比如归一化频率0.25到0.4之间,依赖r/a。结构对称性越高,全方向带隙越难获得,这也是四方晶格不如三角晶格容易出大带隙的原因。

TE和TM分别算完之后,最关键的一步是把两条能带图叠加对比。很多时候你会发现TE在某个频段有带隙,TM在同一个频段完全是导通的,这时不能声称“这个光子晶体有带隙”,只能说“有TE带隙”。如果TE和TM的带隙频率范围有重叠,那才算是比较难得的完全带隙结构。

我记得有一次搭了一个r/a=0.25、硅柱的四方晶格,TE带隙很宽,从0.30开到0.40,但TM在整个区间内几乎没有导通区,透射谱和能带图完全对不上。后来一查,问题出在TM设置时极化定义反了,电场分量指向了面外,导致求解器实际算的是TE。这种“看似对称、实则选错模式”的问题非常隐蔽,特征就是带隙位置和理论预期完全不符,遇到这种情况先回头检查极化方向,别急着改结构参数。

这里再说一个判断经验:对圆柱型四方晶格,单纯增大r/a并不总是让带隙变宽。r/a在0.15到0.3之间通常能找到最大TE带隙,继续增大到0.4以上,第一条带和第二带之间的距离反而缩小,因为高填充率下结构开始接近“连通”状态,等效介质效应增强,周期散射减弱。所以做参数扫描时,别只扫“半径越大越好”这一个方向,要画出带隙宽度随r/a的变化曲线,找最大值点。

5. 用FullWAVE做透射谱与场分布验证

5.1 透射谱仿真流程与归一化处理

能带图算完只完成了第一半工作,要证明这个光子晶体确实能在频域上“截断”光传播,必须用FullWAVE做透射谱仿真。

第一步是搭建器件结构。沿着x方向排列一排四方晶格柱体,比如8~12个周期,z方向保持均匀。在结构左侧设置输入波导区域,右侧设置输出区域。光源用高斯光束或者单模模式源,入射方向对准Γ-X方向,这对应能带图里从Γ到X的那一段波矢,是四方晶格常被考查的传播方向之一。

第二步是设置监视器。FullWAVE里用时间监视器记录某个面上的场强,透射谱一般取输出区域的一个横截面,监视器输出的是该面上的能量的时间积分。为了让透射谱有参考基准,我会先算一个“无结构对照”——介质背景是纯空气、没有任何柱体的直通波导,然后将有结构时的透射除以对照透射,得到归一化透射率。这一步非常重要,因为光源本身有频谱包络,如果不做归一化,透射谱的衰减会混入光源谱形,结果怎么看都不对。

第三步是光源参数。扫描范围要覆盖能带图给出的带隙区域,通常取中心频率带隙中值,光源脉冲宽度要足够短,保证频谱能铺满目标区间。FullWAVE的时间步进受库朗条件限制:dt = dx/(2c)左右,dx越小,dt越小,总步数越多,仿真时间也越长。我一般先跑一个短脉冲快速看透射谱轮廓,再在带隙边界附近跑更精细的频点或更长的脉冲,分出细节。

最后是结果解读。如果结构存在TE带隙,透射谱在对应频段会出现一个明显凹陷,凹陷的频段和BandSolve算出的带隙区间基本吻合。需要注意的是,FDTD仿真区域的长度有限,结构两端存在阻抗失配,带隙两端的透射谱会有振荡结构,这是法布里-珀罗效应,不是物理带隙的毛边,分析时别把振荡峰当成额外导带。

5.2 场分布图背后的物理信息

透射谱只看“能不能传”,场分布图则能看到“光到底在怎么走”。FullWAVE可以在任意时刻输出整个仿真区域的电场或磁场幅度分布,用色图显示出来,直观反映光路径。

带内频率下,场分布会显示光波很顺畅地穿过整个柱列,波前基本保持平面波形状,只是幅度稍有调制;带隙频率下,光在结构入口处被反射,柱列内部场强迅速衰减,形成指数衰减的倏逝波,入口前方则出现明显的驻波条纹。这两种图像放在一块对比,比任何数据都直观。

更有意思的是缺陷态验证。你在四方晶格里拿掉一根柱,或者把某一根柱的半径做得特别大,就引入了点缺陷。带隙频率本来是不能传播的,但点缺陷会在带隙中产生一个局域模式,场分布图上你会看到光能量被束缚在缺陷柱附近,形成近似圆形的局域亮斑。这个亮斑就是微腔的模场,它的频率对应带隙内的一条平坦能带。很多传感器设计就是用这个原理:外界环境折射率一变,缺陷模频率漂移,透射谱里出现一个移动的窄峰。

做场分布分析时有个细节:FullWAVE输出的是某个时刻的瞬态场,如果你取的不是稳态时刻,看到的可能是入射波和反射波叠加的混乱图像。我的习惯是等仿真时间推进到结构内部的瞬态成分基本衰减完,再取一个准稳态的场分布快照。判断准稳态的办法很简单——看透射监视器的时间曲线是否已经平缓,或者场图能量是否稳定下来。

6. 常见问题排查与仿真效率优化

6.1 能带不收敛、带隙不出现的排查

这是我最常被问到的两类问题,放在一起说。

先说“能带不收敛”。表现是能带图毛糙、带边位置随着网格加密一直在漂,甚至在关键点出现虚假交叉。排查步骤:第一步看平面波网格密度,从32×32提到64×64,如果带边频率移动超过1%,继续提网格;第二步看高对称点路径点数,路径上取点太少会导致能带曲线连接不平滑,但注意这不是物理收敛问题,只是画图密度不够,增加取点即可;第三步看单胞建模是否有重叠几何,CAD里圆柱和背景层如果存在微小的重叠或留白,网格划分时会多出极薄的材料层,产生数值噪声。

再说“带隙不出现”。这个问题的源头往往在结构参数,不在软件设置。如果你用的是圆柱型四方晶格,r/a小于0.1尤其还在低频段,基本没有带隙,这是物理规律决定的,不是bug。还有折射率对比度不够,比如背景折射率1.45、柱体折射率2.0这种组合,在四方晶格里很难打开完整带隙。遇到带隙不出现,第一反应应该是扫参数空间,而不是反复重算同一组参数。把r/a从0.1到0.4扫一遍,如果任何填充率下都没有带隙,那大概率是材料折射率差太小,或者结构选型不适合目标带隙。

还有一类隐蔽问题:网格和材料频率单位不匹配。Rsoft里默认单位是微米,如果你把晶格常数写成了纳米数值(比如a=1000却被当成1000微米),能带频率全部偏掉一个量级。仿真的第一步就应该明确单位制,所有尺寸全部按当前单位制换算好,再进入建模环节。

6.2 FullWAVE透射谱与能带对不上怎么办

透射谱的带隙位置和能带图差很多,这是时域仿真最典型的坑,原因通常是以下几个。

第一个常见原因是光源覆盖频率不够。FDTD光源的频谱是脉冲包络的傅里叶变换,如果脉冲太长,高频或低频段能量不足,透射谱在边缘处的凹陷会“测不准”。解决办法是缩短脉冲宽度,让频谱覆盖范围加宽,必要时分两个频段各跑一次再拼接。

第二个是PML反射。PML不是完美吸收体,总有一定反射,尤其在掠射角度下反射率变高。如果透射谱里出现高频纹波,先在相同结构下把PML厚度加倍跑一次对照,如果纹波变化很大,说明PML反射是主要来源。另外PML和结构区之间最好有一段真空缓冲,别把PML贴在柱体边缘。

第三个是监视器摆放位置。监视器离结构出口太近,倏逝场和散射场还没完全衰减,透射数据会偏高。把监视器往后移一个波长左右,同时适当扩大仿真区域,就能滤掉近场干扰。

第四个是偏振混叠。FullWAVE里光源如果选用高斯光束,默认可能会有面外分量,导致TE激发时混入TM分量,透射谱在TM通带频段会有泄漏。解决方法是检查光源设置,确认激励源只有目标偏振分量,或者在模式源里直接选择纯TE模式作为入射条件。

6.3 计算资源与参数扫描的平衡策略

Rsoft里的参数扫描如果全开大网格,计算量非常可观。网格密度翻倍,网格数按四倍增长,FDTD时间步长还要跟着减半,总计算量可能涨到八倍以上。所以得学会“分级仿真”的思路。

我的习惯分三步走:先用BandSolve这种平面波展开法做大范围的参数粗扫,快速画出带隙宽度随r/a变化的曲线,确定候选区间;然后只对候选区间里的几个点用FullWAVE做透射谱验证;最后再对最优参数的附近用更细网格跑一次完整仿真,把带边和透射谱抠准。这套流程能省掉至少一半无效计算,尤其在初次接触一个新材料体系时特别管用。

FullWAVE的并行计算也要会用。Rsoft支持多核并行,配置好之后大网格仿真能显著提速。不过要注意,FDTD并行对内存带宽要求很高,网格数超过百万级别时,单纯加核心数不一定会线性加速,反而可能卡在内存带宽瓶颈上。我推荐的做法是:先单核跑一个小尺寸的模型确认正确性,再开并行跑正式的参数扫描,别一上来就全核全网格,出了问题连调试都难。

关于仿真时长还有个小技巧:先跑短时间看趋势,确定透射谱大致形态,再延长仿真时长微调细节。FDTD仿真时间越长,频率分辨率越高,但早期趋势基本能反映带隙位置。没必要每次扫描都把时间拉到特别长,否则一组参数动辄几小时,一天下来跑不了几组。

最后再说一个参数扫描的小经验:不要只扫半径,把折射率对比度也作为第二维度一起扫。有时候你觉得半径已经很合适但带隙还是不够宽,实际上是折射率差没拉满。两条扫描线一起看,往往能发现“最优解在参数平面的某个角落”,而不是单参数曲线上的某个点。这种二维扫描听起来很费算力,但如果用BandSolve粗网格跑前置筛选,实际代价并不高。

就我个人来说,现在再做四方晶格这类结构,已经形成了一套固定节奏——先定物理目标,再排参数空间,能带图找区间,透射谱做验证,场分布读机制。Rsoft这套组合用顺了之后,从“想做个结构”到“确认结构能用”一般就是一天的工作量。最关键的其实不是软件里哪个按钮,而是你清楚自己每一步在验证什么物理问题。项目标题里的“TE与TM”之所以值得单独写,就是因为这两个偏振模式在光子晶体里从来不是一回事,把这一点想透了,仿真结果的可靠性才算真正立得住。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询