Rsoft能带绘制
最近在实验室被光子晶体能带仿真搞得头大,发现这玩意儿的能带图绘制简直是个玄学现场。官方教程看着挺美好,实操起来分分钟教你做人。特别是那个BandSOLVE模块,每次手动调参数都能让我怀疑自己是不是色盲------毕竟红橙黄绿青蓝紫的能带线混在一起实在辣眼睛。
后来发现用脚本才是王道,直接上硬货:
vbscript
' 能带计算自动化脚本
Set app = CreateObject("RSoft.BandSOLVE")
app.OpenFile("D:\PhC\Triangular_Lattice.bse")
app.CalculateBandStructure
While app.IsBusy
WScript.Sleep 1000
Wend
app.ExportBandData "C:\output\band_data.txt", 0
这段脚本里藏着三个大坑:路径必须用反斜杠、计算完成需要死等、导出版本号参数千万别手抖。我第一次跑的时候因为用了正斜杠,系统直接给我弹了个火星文报错,当场自闭半小时。
能带数据到手后才是重头戏。用Python画图时发现Rsoft输出的k点坐标居然是相对值,得手动换算成布里渊区路径。这时候不祭出numpy大招都不行:
python
# 布里渊区路径修正器
k_points = np.loadtxt('band_data.txt')[:,0]
Gamma_to_K = k_points[:50] * 0.5 # 六边形晶格修正系数
M_to_Gamma = k_points[50:100] * np.sqrt(3)/3
# 拼接后记得在拐点处插入NaN避免连线
这堆修正系数可不是我瞎编的,是拿正六边形晶格的倒空间基矢硬算出来的。有次师弟偷懒没做坐标变换,结果能带图画出来像条歪歪扭扭的贪吃蛇,被导师当场抓获。
Rsoft能带绘制
最刺激的还是超晶格能带分析。当我把重复单元数从5改到10时,原本流畅的能带突然开始鬼畜:
matlab
% 能带折叠观察术
folded_bands = zeros(100,20);
for n = 1:5
folded_bands(:,n) = original_bands(:,1) + (n-1)*pi/a;
end
% 此处建议备好速效救心丸
这种时候就得靠紧束缚近似来救命。有次为了验证计算结果,我左手握着Rsoft的输出数据,右手拿着自己写的紧束缚模型代码,活像个占卜师在对照水晶球和塔罗牌。
折腾久了发现几个保命技巧:1. 每次跑脚本前备份bse文件;2. 定期清理临时文件防止内存泄漏;3. 遇到诡异能带先检查边界条件。上周刚有个哥们因为忘了设PML边界,算出来的能带自带隐身特效------所有模式都跑光了。
说到底,Rsoft这玩意就像个脾气古怪的老教授。你按他的规矩来,能带图画得比教科书还漂亮;要是自作聪明,分分钟给你整出个量子艺术展。现在我的项目组里流传着新梗:没在深夜被Rsoft虐哭过的人,不足以谈光子人生。
