十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Comsol复现谷霍尔光子晶体:从能带到边界态的全流程踩坑指南

Comsol复现谷霍尔光子晶体:从能带到边界态的全流程踩坑指南 Comsol复现谷霍尔光子晶体从仿到真的全流程踩坑记录前阵子我在复现一篇关于谷霍尔光子晶体Valley Photonic Crystal, VPC片上通信器件的太赫兹拓扑光子学论文折腾了三周多。别看标题写得挺玄乎拆开看就是三件事在Comsol里搭出正确的光子晶体几何、算出具有谷对比度的能带结构、然后用有限元方法激发并验证拓扑边界态在太赫兹频段的传输。这篇模型复现文章的核心是解决在这三件事里一连串看起来不起眼但做不出来就是卡死的问题。给刚接触拓扑光子学的朋友一个忠告如果没有做过光子晶体仿真直接冲进去复现这类文献你大概率会在网格、边界条件和工作平面这仨地方来回打转。这篇文章我尽量把整个复现过程的思路、参数、判断依据和排查链路都摊开来讲适合已经能用Comsol做基础电磁仿真、但对拓扑光子学概念本身有些陌生的读者。1. 复现之前要搞清楚的物理图像谷霍尔效应到底在仿真里长什么样先别急着开软件。我在复现之前把原文的物理机制翻来覆去看了好几遍因为如果你不理解谷霍尔效应在有限元模型里实际上对应什么现象几何画得再像也验证不出来。这里我不堆公式完全从仿真可观测量的角度说。谷霍尔光子晶体本质上是一类具有六角晶格或者类六角晶格的介质柱/空气孔阵列它通过某种方式破缺了晶格结构的反演对称性即空间反演变换下的不对称从而在动量空间靠近K或K谷的位置打开一个带隙并赋予上下两个能带不同的Berry曲率分布。带隙打开之后普通的光子晶体带隙内是没有任何态的但谷霍尔结构在两种不同对称性构型的交界面上会支持传播方向锁定且背散射被抑制的边界态。在仿真里我们要观测的核心物理量就是这两个第一能带结构在K点附近出现一个完整的带隙且满足频率与波矢的关系曲线在K点附近呈线性交叉并随后打开第二在带状或者弯折波导结构中我们施加一个偶极子源或者波端口激发能观察到电磁场沿着边界单向传输且经过尖锐拐角时透射系数不出现明显的突然塌落。很多刚入门的同学会误以为谷霍尔光子晶体就是简单地把六角晶格的两个子晶格做成不同尺寸或者不同折射率这就是所谓的上/下子晶格失配。确实这是最常见的实现方式但关键在于这个失配必须选择合适的方式破缺对称性而不能是任意失配。你需要在Comsol里有两个关键变量来表征失配程度对三角排列的介质柱而言通常是相邻三根柱子的半径不一致即按A/B两类柱子在原胞内以特定排布方式放置或者对C3v对称的晶胞做特定的形变。常用的一个参数叫谷对比度它决定了带隙开得大不大也会影响边界态的鲁棒性上限。在动手建模前我建议先建立一个判断标准复现出的能带结构在K点打开的第一带隙宽度相对中心频率的比例应该在原文给出的范围内。如果原文说带隙相对带宽5%你仿来只有0.5%那大概率不是网格问题而是几何参数甚至对称性破缺方式错了。这个细节很关键后面排查时会反复用到。另一个需要提前理解的概念是拓扑相变的仿真判断依据。严格说一个有限尺寸的系统是看不到真正的拓扑相变的你得通过扫描失配参数比如两子晶格柱半径差观察带隙从闭合-再打开的过程来推断拓扑性质是否发生改变。这个扫描在Comsol里做起来其实很快尤其是用参数化扫频配合能带求解器一次能跑出几十个带隙位置判断相变点就非常直观。我建议在正式验证边界态之前一定要先把失配参数从0变化到正负分区的能带演化跑一遍这个图和正文里的相位图是对应起来的也是后续设计拓扑波导长度的依据。2. Comsol建模前的准备参数化几何与工作平面的几何逻辑这个部分我在第一次做的时候吃了不少亏所以我会把操作层面的细节摊得很细。Comsol的几何建模里VPC结构的常规做法是用工作平面Work Plane在3D组件里先画一个2D平面几何然后用Extrude沿面外方向拉伸成平板或者直接使用2D组件做面内仿真。太赫兹片上通信器件通常设计成厚度远小于波长的金属或介质平板结构所以基于2D近似的平面波导模型足以捕捉主要的拓扑边界态行为而需要做全3D的时候再用Extrude和Port边界来验证。对建模而言最怕的就是工作平面坐标搞错。这一点非常容易踩坑Comsol默认的Work Plane位于xy平面一些朋友习惯直接在全局坐标里画等建好几何后才发现晶格的方向不对拓扑边界态只在特定方向支持一旦晶格旋转了90度边界波导走向全乱了等于整个几何推倒重来。我建议在几何节点下新建Work Plane时把平面坐标明确设置为x-y然后在平面上建立一个以(0,0)为中心的六角晶格超级原胞或者一个包含若干晶格常数的带状单元。接下来是参数化几何的具体做法。六角晶格有两种基本建模思路第一种是画一个正六边形的原胞区域里面放置两组半径不同的圆形介质柱第二种是直接画一个很大的矩形薄板里面用阵列方式填满六角晶格点阵。对能带结构的本征频率求解来说原胞法是最直接的因为你可以只画一个原胞再通过Floquet周期边界条件来模拟无限周期结构。对边界态传输仿真来说就需要用第二种方法搭一个有限的带状区域中间留出一条两不同构型交界的畴壁。给你一个我实测很好用的参数表做三角晶格谷霍尔光子晶体时经常用的参数定义参数数值示例说明a100 μm晶格常数决定太赫兹工作频率的大致量级r10.24a第一类介质柱半径r20.16a第二类介质柱半径破缺反演对称性用h0.5a平板厚度用Extrude拉伸时用到ε_r11.7硅在太赫兹频段的相对介电常数对应折射率约3.42背景空气背景折射率1.0这只是示例具体r1和r2的取值要以原文为准。但有一点是通用的两个半径的差异越大带隙越大但太大之后整个结构的拓扑性质有可能退化成普通的带隙材料边界态的鲁棒性反而下降。所以做参数扫描时要留意带隙宽度的峰值范围不是越大越好。几何画完之后一个容易忽略的动作是Form Union和Form Assembly的选择。对周期结构能带计算我建议把介质柱和背景区域设为Form Union这样有限元网格可以自动在交界面处贴合物理场接口也更容易处理。对需要分别定义不同畴的拓扑波导模型倒是可以考虑Form Assembly来保留所有域的独立边界方便后面设置不同区域的材料极性和几何参数。不过要注意用Form Assembly后相邻域之间的交界面默认不连续必须手动添加连续性边界条件或者用接触特性把它们耦合起来否则电磁场不会穿过交界面仿真结果会直接废掉。我第一版波导模型就是这么废的边界传输率全是零排查了两天才发现是Form Assembly的默认不连续边界导致的。3. 能带结构计算的实现细节Floquet周期条件与布里渊区扫描能带结构计算是复现文章的关键一环整个过程的核心就是用Comsol的特征频率求解器配合周期性边界条件解出不同布洛赫波矢下的本征频率。这个步骤做对了后面的边界态仿真才有依据做错了后面的一切都是无源之水。先说周期边界条件。在射频模块RF Module或者波动光学模块Wave Optics Module中对原胞的左右边界要设置Floquet周期条件也叫Bloch周期性边界条件。需要注意Comsol 6.x版本里设置Floquet周期边界时需要在边界条件的输入框里明确指定布洛赫波矢k的两个分量。你可以通过定义两个辅助参数来动态改变k的值比如kx k0cos(θ)ky k0sin(θ)然后用参数化扫描来扫描k点路径也可以直接定义几组不同的k值每个k值计算一次特征频率。但是这里有一个很经典的坑如果你在研究设置里用一个参数扫描来扫描布洛赫矢量而Comsol的扫参是批处理模式那么每个k值求解的特征频率都会基于同一个初始网格和相对容差对某些k点附近的简并态可能分辨不出来。我建议的做法是先用粗扫描扫描整条高对称路径比如Γ-M-K-Γ找到带隙的大致位置和宽度然后在带隙边缘附近加密采样点再用更小的特征频率搜索范围比如desired number of eigenvalues周围设置搜索基准重新精算。关于特征频率搜索范围的设置也值得单独说一下。Comsol的特征频率求解器默认是搜索接近某个参考频率的特征值这里要注意如果你求解时设定的参考频率离实际带隙频率很远求解器会漏掉关键模式或者找出大量无关高次模。更麻烦的是如果你一次性要求解器返回20个特征值它可能把高频的下一个带都算进来能带图看上去乱七八糟。我的经验是先按原文给的器件工作频率设置参考频率并把搜索范围缩小到0.8f_work到1.2f_work之间先算前几个模式确认带隙位置后再决定是否加宽。还有一个特别容易让人抓狂的点是六角晶格原胞的周期性边界条件中原胞形状和晶格矢量的配对必须严格一致。用菱形原胞时左右两个边界是平移对应的用六边形原胞时三对边界分别对应三个不同方向的晶格平移。如果你用六边形原胞建了模但边界条件只设置了x方向的Floquet周期那算出来的能带结构根本不是一个完整的二维周期系统K点的谷结构完全不会出现。我第一次复现的时候就是用了六边形原胞但偷懒只设了一对Floquet边界算出来的能带在K点根本打不开带隙白白浪费了一整天的计算时间。能带结构计算的具体步骤我整理如下方便你直接照着操作建立2D组件新建工作平面画一个六角晶格原胞推荐菱形原胞边界条件更容易配放置两个不同半径的圆柱截面。添加电磁波、频域ewfd物理场接口把求解域设置为所有域默认边界条件设为完美磁导体或根据结构选择并确认需要修改的边界。在周期边界条件中选择Floquet周期性分别指定原胞的源边界和目标边界对应两个方向的晶格平移矢量。材料设置介质柱区域设为硅ε11.7背景设为空气。研究类型选择特征频率设定参考频率和搜索数量开启参数扫描扫描路径设为Γ-M-K-Γ。在结果中把每个k点对应的特征频率提取出来绘制能带图将k点坐标作为横轴、频率作为纵轴。观察带隙是否打开以及K点附近是否出现锥形色散如果带隙闭合或者没有明显的谷对比度回到几何和参数检查对称性破缺是否真实存在。顺便说一个数值上的小建议对于二维模型网格的极限尺寸可以设到最小特征尺寸的1/5左右但介质柱之间的空气隙非常窄时还要在空气隙里手动指定边界层网格。尤其当两个介质柱非常接近时它们之间的场强梯度很大默认的三角形网格在窄缝区域会迅速退化算出来的带隙位置会偏移很远。你可以用边界层属性来加密圆周边界并把窄缝区域的网格细化因子设到0.2甚至更小。4. 从能带到边界态拓扑波导模型的构建与激发方式能带算完确认带隙宽度合理之后就进入整个复现里最有成就感也最多坑的阶段用有限大小的带状结构来模拟拓扑边界态传输。这个阶段的核心是把无限周期结构切出一段来并在两种不同的谷霍尔构型之间形成畴壁。在Comsol里最常见的操作是构建一个超胞波导模型长方向上是有限的通常包含几十个晶格常数宽方向上也包含若干个晶格常数但在模型中间有一条分界线左边区域的介质柱半径配置为r1/r2右边区域的介质柱半径配置交错成r2/r1也就是谷反转关系。这样两个区域各自是不同拓扑性质的谷霍尔结构中间的畴壁就能支持拓扑边界态。这里我要特别强调一个实践教训仿真模型的边界不要贴着畴壁放。很多人图省事把左右两端的端口直接设置在畴壁两端结果端口激发产生的平面波以各种角度打到晶格边缘反射极其严重提取到的传输谱上全是驻波干涉条纹完全没法看。我的做法是在畴壁的两端各留出至少5~8个晶格常数的缓冲区端口放在缓冲区外侧这样边界态在到达端口前有一段稳定的传播距离提取到的S参数才是真正的传输特性。如果你对提取的S参数里周期性振荡很头疼大概率就是缓冲区不够。拓扑边界态的激发方式有两种选择集总端口或偶极子源。对片上通信器件来说大多数文献里用的是波端口激发并在接收端放一个同样的波端口来提取S21。在Comsol射频模块中你可以在矩形边界上设置集总端口Lumped Port它能自动计算特性阻抗并把入射波注入模型。但要注意拓扑波导的场分布并不是标准的矩形波导模所以集总端口和边界态的模式匹配度可能不高导致S21的绝对值偏低。这种情况下更合适的做法是用偶极子源在该位置加一个很小的电流密度源然后查看场分布是否沿着畴壁单向传播。偶极子源不需要与导波模式匹配你只需要观察场图案的走向和方向性就可以定性判断拓扑边界态是否存在。定量提取透射系数再用模场积分方法将接收端截面上的电场投影到目标模式上算一个模式耦合系数。另外一个很重要的点是边界条件的设置。拓扑边界态对样品的边缘和终端非常敏感这就是拓扑保护这句宣传语的现实意义拓扑保护保护的是沿确定路径的散射鲁棒性但如果你的模型外边界恰好是一个吸收边界或者完美电导体它可能反射大量杂散场掩盖真实的边界态传输。为了得到干净的场图建议在超胞波导的最外侧一圈加上完美匹配层PML或散射边界条件SBC模拟延伸到无限远处的效果。PML在Comsol里的设置对电磁波模块来说很成熟核心操作就是把外层几个域的厚度设为工作波长的0.5倍以上然后设置为PML域。具体到仿真参数我这次用的网格策略是这样的介质柱内部采用三角形自由网格最大单元尺寸为0.1a背景空气区域的网格最大尺寸为0.15a在畴壁两侧各一个晶格常数的区域手动设置一个局部细化区域网格尺寸不超过0.05a这是为了捕捉边界态的局域场分布。太赫兹频段下波长相对结构尺寸很大所以网格总量其实不大二维模型一般几万到几十万个自由度就够用了单次频率扫描在普通工作站上跑几分钟到十几分钟非常友好。5. 数值仿真中的幽灵结果网格、边界和求解器的三大坑这里我想集中写一写我在这个项目里遇到的问题排查链路希望你能少走一些弯路。每一个幽灵结果都是耗时两三天的代价换来的。第一大坑是网格收敛性。我第一次算出带隙宽度是8%但原文明明写的是4.5%差距大到我一度以为是几何参数理解错了。后来在细网格下重新计算时才发现默认网格那个normal精度级别在介质柱圆弧边界上的离散误差很大导致带隙位置和宽度都整体上移。解决方法是把网格级别调到finer以上并在圆柱边界上增加边界层网格再算一次能带。网格加密后带隙宽度回落到了4.85%左右与原文的偏差收敛到了可接受的范围。这个教训告诉我所有能带结果的判断必须先过一遍网格收敛性检查用不同网格密度跑三组能带如果带隙位置偏移小于1%才认为结果是网格无关的。第二大坑是Floquet边界条件的相位设置错误。Comsol里Floquet周期条件的波矢分量定义在全局坐标系中而你的晶格矢量可能不与全局坐标系对齐。如果原胞的平移矢量是倾斜的但你直接在边界条件下输错了波矢分量比如把两个方向的k分量反了能带会沿着错误的方向折叠K点和K点的位置错乱谷结构看起来破得乱七八糟。这种问题最典型的表现是你扫了整条高对称路径但能带图在Γ-M-K-Γ每个段的连接点上出现莫名其妙的分叉或跳变。这个时候不要怀疑物理先回到原胞几何把原胞的两个晶格平移矢量在测量工具里测量出来确保Floquet条件的k矢量对应的是真正的倒格矢方向。第三大坑是求解器不收敛导致的模式穿透。在拓扑波导模型中如果求解器没有收敛到真实特征模态结果里高频噪声和数值模式会叠加在边界态上场图上看去像有一堆杂散的亮斑。排查方法是先降低频率扫描的范围改为单频求解观察场分布是不是沿着畴壁传播的局域模式如果不是尝试增加直接求解器的迭代次数或者改用MUMPS直接求解器而不是默认的迭代求解器。对二维问题来说直接求解器虽然内存占用大一点但可靠性和稳定性远高于迭代求解器。第四大坑其实不算坑是很多人会忽略的模式选择。拓扑边界态的色散关系里在带隙频率范围内通常有一个前向传播模式和一个后向传播模式自旋-谷锁定它们在同一个频率上都可能存在。当你用一个单频源激发时如果源的位置或对称性使得两个模式都被激发场图看起来会像是双向都有效而实际上边界态是单向的。要验证单向性最好改变源的位置到另一端看场分布是否跟着反方向走。这个验证逻辑对理解谷霍尔拓扑边界态非常重要也是评审或导师最爱问的问题之一。6. 损耗与材料模型太赫兹波段和片上通信场景下的现实约束有不少人复现文献时只用无损耗的材料参数算出来的场图和传输曲线都很漂亮但实验上根本测不到那么高的透射率。太赫兹波段尤其是硅基器件材料的吸收损耗、自由载流子损耗和加工粗糙度引起的散射损耗都会对边界态的传播长度产生直接影响。既然这是片上通信方向的器件那我们在仿真阶段最好把损耗的影响摸个底。在Comsol里你可以在材料的介电常数中输入复数值实部对应色散虚部对应损耗。硅在太赫兹波段损耗的相对水平可以通过Drude模型来近似估计但简化处理时一般就在相对介电常数里加一个0.01量级的虚部。我建议的做法是先做一组无损耗的理想模型确认拓扑边界态的基本行为然后扫描虚部的不同取值比如从0.005到0.05观察S21的最大值如何变化。这一步可以帮你判断器件在真实加工中能容忍多大的材料损耗也是一个很实用的设计指标。绝大多数文献的仿真结果是在无损耗条件下得到的如果你能在复现的同时做一个损耗扫描会非常有说服力。同时片上通信场景里还有一个不可忽视的细节波导的耦合过渡区。边界态波导的模场尺寸通常和普通的介质波导模场尺寸不一致连接标准片上波导时会有模式失配损耗。如果在Comsol里这个过渡区结构建得不对S参数的绝对值就会偏低。我在复现时特意在模型两端加了锥形过渡区宽度从边界态波导宽度渐变为标准单模波导宽度算出的S21比直接对接高了将近3dB这个提升在实际设计中是相当可观的。7. 参数扫描与后处理技巧如何把能算变成能看最后简单说下我做参数扫描和后处理的心得因为很多人经常算出一堆数据却不知道怎么整理成能放进论文或汇报里的图。Comsol的Parametric Sweep节点可以在同一个研究中扫描任意参数比如失配半径差Δr r1 - r2。对能带结构来说我喜欢直接设两个变量用扫描生成一个二维数组将带隙的边缘频率提取出来然后绘制带隙宽度随Δr的变化。如果在某个Δr附近带隙闭合后重新打开那个点附近就是拓扑相变点。这个数据处理可以用Comsol自带的Global Evaluation和表格导出功能把结果导出成CSV后我用Python做了一下平滑和曲线标注图的质量会高很多。对传输谱S21的提取我建议用频域扫描频率范围设在带隙中心频率上下各一半带隙宽度分辨率取带隙宽度的1/50至1/100。这样既能完整观察透射峰的结构又不会让扫描时间失控。得到频谱数据后用1D Plot Group画一条S21随频率变化的曲线再配合2D Plot Group画特定频率下的电场模分布图这两张图组合起来就是一份非常完整的边界态传输证据链。关于动画导出如果你想把场传播的动态过程做成gif或者视频给汇报用可以在频域扫描的每个频率点保存场数据然后用Comsol的Export节点导出不同频率下的电场分布再用第三方软件合成动画。这个操作不算复杂但每张图的分辨率记得设到600dpi以上不然放到PPT里会糊。8. 我的调试顺序和心得从零到出成果的执行路径如果你现在正准备开始复现这篇文献我给你一个我验证过且可复用的调试路径按这个顺序走能省掉很多来回返工的时间。第一步先用文献中的几何参数在Comsol里搭建二维原胞模型跑一条Γ-M-K-Γ的能带确认带隙出现在正确频率。如果这一步和文献对不上不要往下做波导仿真先回头检查几何、材料或边界条件。第二步用带隙频率附近的一个频率值在超胞波导模型上做单频激励确认场能沿着畴壁传播。这个阶段不追求定量准确只追求有没有边界态。第三步在这个基础上做频响扫描提取S21谱线观察带隙范围内是否出现高透射的平台。第四步做损耗扫描和拐角弯折鲁棒性测试可以在波导路径里加一个60度或120度的弯折验证边界态的拓扑保护特性。第五步把所有结果和原文的图对照逐项核实偏差范围。就我个人实际操作的体会来看Comsol复现这类拓扑光子学结构物理上真正难的不是加压或加边界条件而是对结构对称性破缺方式的理解。大多数卡壳都源于几何或者周期性边界条件的设置问题而这些又都是可以通过一步步排查解决的。如果你现在也在复现同一篇文章并卡在了某个环节建议你优先检查Floquet周期条件的波矢方向和原胞形状是否匹配其次检查Form Union / Form Assembly的域连续性然后检查网格收敛性。这三项过关后模型基本不会再出大问题。最后再分享一个小技巧跑大模型前先用2D的特征频率小网格模型把带隙位置摸准了再转到全尺寸波导模型能省下大量试错计算。
返回列表