comsol光子晶体中的角态与边界态。
style="border:
/>
当光子晶体开始玩“角落杀”
光子晶体这玩意儿,搞光的人应该不陌生。
但最近发现它还能在角落里搞事情——比如“角态”(Corner
States)和“边界态”(Edge
States)。
简单来说,角态就是光被锁在晶格的角落蹦迪,而边界态则是沿着两种不同结构的交界处溜达。
听起来像不像物理版的密室逃脱?今天咱们用COMSOL来扒一扒这些态是怎么形成的,顺便搞点代码实操。
style="border:
/>
先搭个蜂窝棋盘
想玩角态,得先有个周期性的晶格结构。
六方晶格(蜂窝结构)是经典选择。
COMSOL里可以用脚本快速建模,比如用参数化几何画蜂窝晶格:
%COMSOL
ModelUtil.create('Model');
geom
model.geom.create('geom',
3);
pattern.set('fullsize',
[10
geom.runAll;
这段代码干了啥?先建了个圆柱体(模拟介质柱),然后用六方阵列无限复制,最后生成蜂窝状光子晶体。
参数 3px;">a 3px;">r0控制晶格间距,style="background:
决定柱子粗细。style="background:
调这两个值,能改变光子带隙的位置——这直接关系到角态能不能出现。
style="border:
/>
边界条件:给光子上锁
comsol光子晶体中的角态与边界态。
想让光在边界或角落憋着,得设置合适的边界条件。
比如在晶格边缘用Floquet周期边界模拟无限大结构,而在角落区域用散射边界条件或者完美电导体(PEC)。
这里有个坑:如果边界条件设反了,光直接跑路,角态就没了。
%设置Floquet边界
model.physics('emw').prop('BoundaryCondition').set('Floquet',
'on');
model.physics('emw').prop('FloquetX').set('kx',
'k0');
model.physics('emw').prop('FloquetY').set('ky',
'0');
Bloch波矢 3px;">k0对应动量空间中的位置,扫频时从0到π/a遍历布里渊区。style="background:
这时候你可能会想:为什么边界态只在特定 3px;">k0出现?因为能带结构在这里劈叉了(带隙开了),光只能在带隙边缘的动量区域存活。style="background:
style="border:
/>
扫频:找光的藏身之处
跑完仿真,重点看频带图。
角态通常出现在带隙中间,而边界态可能出现在带隙边缘。
COMSOL的后处理功能可以提取本征频率和场分布:
%提取本征频率
study.set('paramvalues',
{'k0'},
solutions.getEigenfrequencies();
绘制频带图
(Hz)');
如果看到带隙中有孤立的频率点(比如0.42c/a附近),恭喜,角态出现了!这时候切到场分布图,应该能看到光场挤在角落瑟瑟发抖。
style="border:
/>
翻车预警:参数别乱调
- 晶格对称性:六方晶格更容易出角态,四方晶格可能扑街。
- 材料参数:介质柱介电常数太高,带隙会变宽,但角态可能消失(光被关太死,连角落都不给活路)。
- 网格剖分:角落区域网格不够细,场分布会像打了马赛克——这时候COMSOL的边界层网格功能能救命。
style="border:
/>
最后说人话
角态和边界态本质上都是拓扑保护的——就像光被某种“规则”强行按在特定区域。
用COMSOL折腾这些现象,核心就三点:结构对称性、边界条件、参数扫描。
下次如果你在仿真的频带图里看到奇怪的小尖峰,别急着删模型,说不定那就是光在角落里开派对呢。
(代码仅供参考,实际建模可能需要根据版本调整。
翻车了别找我,找COMSOL客服🤣)


