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²它描述单位晶胞里被柱体占据的面积比例。材料参数的取舍有个基本原则折射率对比度越高带隙越容易打开带宽也越大。最常规的做法是空气背景n1.0加硅柱n≈3.45这个组合在近红外波段透明、折射率差够大带隙很可观。如果考虑后续实验加工也可以用二氧化钛折射率约2.4~2.6或者氮化镓之类但带隙会窄一些参数容差也更紧。我建议第一轮仿真把晶格常数归一化为a1.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/a0.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里默认单位是微米如果你把晶格常数写成了纳米数值比如a1000却被当成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”之所以值得单独写就是因为这两个偏振模式在光子晶体里从来不是一回事把这一点想透了仿真结果的可靠性才算真正立得住。
阅读完成 · 觉得有帮助?