MEEP如何获得正确的透射率
写在前面的话:
(1)本BLOG发表的目的是为了传播知识,不谋取任何商业利益,如涉及到侵权,将立刻删除!
(2)很多内容是求助了其他知乎网友的,我本人不一定懂,所以你问我本BLOG派生的问题我可能回答不上来!
今天我们来聊一下对于拓扑光子学领域的结构,MEEP如何获得正确的透射率。
MEEP和其它FDTD软件(比如RSOFT,LUMERICAL等)计算透过率的时候,一个重要区别是MEEP需要进行参考仿真,参考仿真也就是把不带光子晶体的波导再运行一次透过率计算。然后把两次仿真的结果相除,具体方法在网站:
https://meep.readthedocs.io/en/latest/Python_Tutorials/Resonant_Modes_and_Transmission_in_a_Waveguide_Cavity/有介绍。
既然RSOFT等软件不用运行额外仿真,我曾经异想天开,会不会MEEP也能在特别的配置下只运行一次仿真就得到正确的透过率?但是很遗憾以我的水平,我还没想出来如何设置。
我首先设想的是,直接在光子晶体波导通道放一个MONITOR,然后在光源附近放一个MONITOR,然后两个结果一除不就是正确结果了?但是我问了好几个AI,他们都说这样有明显的错误,因为光源附近的那个MONITOR很有可能监视到反射波,导致归一化过程不正确,算出来的透过率错误。所以不能这么搞。而LUMERICAL和RSOFT都有自带的算法过滤掉反射波,所以可以这么搞。
然后我又想的是,能否直接在软件里用某种函数提取出光源的谱,然后直接相除,后来发现我想多了,不存在这种函数,MEEP官方网站里倒是有类似的表述,但是AI说那个不能用来做分母去算透过率,因为《那不是为了算透过率准备的》?!
既然两种方法都不行,那只能用软件官方给的方法,老老实实跑两次仿真了。我发现只有像下图这么配置的时候,算的透过率才能和文献一样:
这是知乎上的专家《小钊总》发的拓扑光子学计算教程里的图,我觉得有很强的参考价值,虽然软件用的是LUMERICAL,但是核心思路是一样的。也就是说,哪怕仿真一个二维光子晶体,也要在左侧右侧引入两个额外的细矩形,然后矩形和监视器放在这两个块上。对于那些监视器直接放在一侧的文章(没放细矩形),我重复的透过率结果总是有问题(形状没问题,归一化强度有问题)。不知道为何,但是我敢肯定是MEEP自身的设置问题,可能是我哪里没设置好,因为我用LUMERICAL重复这种不带细条的论文,就没问题。
知乎教程对应文章是这个:
《A silicon-on-insulator slab for topological valley transport》是HEXINTAO老师在2019年发的一篇比较有名的论文,小钊总的教程就是关于这个论文的。这种配置比较容易重复出来,看MEEP的官方教程即可。
像这种光源放在了波导内部的情况,我用LUMERICAL和RSOFT就能很轻易重复出来,但是用MEEP算的透过率就是不对,我觉得可能跟我的参考仿真设置有错误有关系?(我参考仿真用的还是一个细条,左侧发光右侧监视。跟MEEP官网教程上一样,但是我总感觉这种配置的物理图像不太清晰)
对于像下图这样的结构,是空气背景而不是硅薄膜背景,这种情况同样是需要两个细矩形的,如果不加矩形,透过率就会算的不准确。这个时候加的矩形应该是空气矩形。
图里蓝色区域是氧化铝。背景空气。至于加的矩形多宽,请参考上面的知乎教程,也可以参考硅背景的情况。光源就放在空气矩形里。透射谱同理,否则我发现算的透过率不对。
最后,光源代表的细条(也就是入射的条形波导的宽度,因为二者一般一样长)应该设置成多长呢?这个我问了AI,AI说可以设置成2倍的晶格常数(正方晶格)或者2*1.732倍的晶格常数(三角晶格)。我翻看了很多文章,发现这个说法是有道理的。大家可以看大多数文章怎么设置,跟他们一样就行。下面是几个例子:
来自http://dx.doi.org/10.1016/j.optcom.2014.09.014
来自https://doi.org/10.1016/j.photonics.2017.11.001
来自http://dx.doi.org/10.1016/j.optcom.2016.10.019
下面我们看这张图:(来自http://dx.doi.org/10.1016/j.optcom.2016.06.020)
我们能够清晰的看出光源的宽度
