用BFAST做anti-reflection layer的仿真,transmission绝对值总是大于1

您好!

我在做anti-reflection layer在不同入射角的时候的透射,反射仿真,最大入射角到了75度。

正入射的时候直接采用了Block/period plane wave source。

在入射角大于0的时候,因为同时想得到宽谱的结果,所以使用了BFASTsource进行仿真。但是出来的transmission监视器的T值绝对值总是大于1。我尝试过正入射+BFAST光源,依然T值绝对值大于1。
如果换成Bloch就没有这个问题,但是bloch只能通过sweep来得到宽谱结果,所以还是想能够用BFAST。

附件中是仿真文件,不知道问题在哪里?

另外,正入射的时候,161011_Oblique angle_0_data used.fsp (255.8 KB)
从我的仿真数据来看,直接在同一位置放两个同样设置的平面光源,一个0 度polarization,一个90度polarization,得到的结果和单独用这两个光源仿真再叠加,结果是一样的。不知道是巧合还是系统里面就可以这样?

谢谢您!

首先问你一个问题:你是想仿真圆偏振光吗?如果是,其中一个必须有90大于的初始位相(另一个为0)。如果不是圆偏光,没有必要如此设置,仅用Polarization角45度就可以。

谢谢您!

不是仿真圆偏振光,是想仿真非偏振光。
我看论坛上面以前您的回答帖子是说需要用polarization分别为0度和90度的plane wave分别仿真两次,然后叠加结果。所以做了这样的设置。

我也尝试过单独用其中一个polarization的光去做仿真,但是BFAST模式下依然有transmission大于1的情况。

我修改了,结果小于1:


想仿真非偏振光,不能将两个光源同时都放在仿真区,你这样的话得到的是相干的。
参见附件。161011_Oblique angle_0.fsp (255.8 KB)

谢谢孙博士!

  1. 所以说如果想得到非偏振光的仿真结果,还是只能一个0度偏振,一个90度偏振的光源分别仿真,然后做线性叠加了。

  2. 我的仿真透射率绝对值大于1是发生在非正入射,使用BFAST光源的情况,之前的帖子我可能没有说清楚,不好意思。因为我想一次仿真得到宽谱的结果,所以没有用bloch去扫频。按照您发回给我的附件,我把光源入射角theta改成30度,得到的transmission还是大于1。请见附件。其中材料我用的都是SiO2。

161011_Oblique angle_0_Gsun help.fsp (361.9 KB)

谢谢您!

A1: 将它们的强度量平均叠加;
A2:我抽空调整一下。

好的!
谢谢孙博士了,辛苦!

我做了很多测试,发现:
没有金字塔,结果正常;
用高精度,更细的细化网格和更高的网格精度,结果有改善。
我感觉可能是这种结构在几个波长有很强的谐振但是一直到1E-7都没有很好的分辨,

上面是通过时间监视器的频谱得到的。
所以你可能需要用更高的精度,同时也要注意PML 的类型和总厚度。你再调整测试吧。

最后说明:对于这种每个单元都连在一起的周期结构应该画出周围的其它单元。161011_Oblique angle_0.fsp (255.4 KB)

孙博士您好!

对的,我也是发现BFAST 或者Bloch加上平面 (没有金字塔),就正常。
然后bloch加上金字塔,只计算单一频率,大概率正常。但是一旦BFAST+金字塔,就会大概率有问题。

关于波长谐振我在想是不是因为oblique angle入射的时候,300 nm的结构不完全subwavelength了。

我正在您修改的基础上尝试不同的PML。
跟您确认一下您的几个建议:

  1. 更高精度,您的意思是说用1E-8甚至更高么?还是更长的仿真时间?
  2. 更细的细化结构您是说 mesh的网格划分更细?
  3. 更高的网格精度您是指, FDTD的网格划分更细?
  4. 对于每个单元都连在一起的结构,画出周围的其他单元。但是FDTD仿真还是可以只计算其中一个单元,对么?还是需要多计算几个单元?

另外,关于时间监视器,我不懂,不太会看其中的意思,您圈出来的几个地方,我只能理解是不连续,但是不明白其中的意思。有相关文章我可以阅读学习么?

谢谢!

更高精度是指,细化网格和Mesh Accuracy以及更小的Autoshutoffmin,因为不知道是不是一些谐振影响结果。
在这种尽连的周期结构,应该画出仿真单元周围的结果,实际仿真仍然是其中一个单元。
时间监视器检测的是时间信号,因此还可以得到该信号的傅立叶变换,也就是Spectrum。 圈出来的几个地方谐振很尖,我想可能它们的时间信号没有得到充分的衰减。

好的,谢谢您!
如果最后我这边有什么进展,再和您沟通!

1 Like

我用更高精度测试,结果基本正确但是我没有仿真到Autoshutoffmin。估计Autoshutoffmin小到1E-7帮助不大最重要的是你的结构对网格精度要求高。参见附件(你可以用1E-6,否则仿真时间太长)。

161011_Oblique angle_30_Bloch.fsp (259.6 KB)

谢谢您!
所以只要mesh比较细化就好。
FDTD的mesh level还是可以只选择比较低,用2就好是么?

我这边这两天第一个是尝试了用bloch plane
wave,一次做一个频率,然后扫频,比较麻烦一点。结果依然有看起来不够连续的地方,但是transmission
都大于1了。

另外我学习了一下您上次帮我修改之后的文件 (见附件),有几个疑问想请教一下:

  1. 结构上您帮忙扩展到了3*3结构,但是我发现里面有几个位置的pyramid重复放置了,不知道目的是?
  2. material方面,我以前是用材料库里面的SiO2,您帮我修改成了一个固定refractive
    index的材料,原因是说对于这个dielectric结构,这样就可以了么?
  3. 您帮我调整的mesh area要比FDTD area大。这个的目的是什么?超出FDTD的范围仿真并不会计算,目的是为了避免mesh边缘的不连续么?

谢谢您!

网格精度先用2,如果提高精度可能PML也要多层。
用Bloch结果不连续,你需要固定网格(不要随波长变)、固定材料拟合、可能还需要将脉冲变长。
A1:重复式不必要的,因为我用的是Array功能所以有重复。你可以删除多余的。
A2:主要是排除一些因素。
A3:也是为了排除可能的原因。
我也再测试。

明白。
固定网格的话,具体在FDTD和mesh网格里面是怎么设置?不要用automatic
nonuniform网格?以及mesh的设置是不是也应该设置步长,而不再是equivalent index了?

固定材料拟合的意思就是用一个固定的index么?

bloch波长的使用有没有一些tips,经验总结帖子我可以去翻一翻?

谢谢!

猜测了一下,固定网格的意思是,在FDTD/advanced里面,勾选 override simulation bandwidth for mesh
generation。然后设置mesh min 和mesh max为整个扫描的范围。
比如我想得到400-700nm的结果,那这里就设置为400和700,这样在bloch扫描的时候会保证每个波长的网格划分一模一样,对么?

固定网格:在FDTD/Advanced,指定计算网格的波长范围;其它不变。
固定材料拟合:你的情况不需要因为折射率固定了。如果是色散的,可以在SHowAdvanced里面指定波长范围。
参见Bloch边界扫描波长以及这个帖子

看来这个文件的确需要很高精度的网格用BFAST才能得到较好的结果。这个是用equivalent index=32,运行两天的结果:

161011_Oblique angle_30_ n=32.fsp (263.6 KB)(Autoshutoffmin 3e-6就强行停止,否则时间太长)
如果用Bloch,可能不需要精度如此高。

如果我做的话,我就用Bloch扫描波长,固定仿真的网格后应该不会产生不连续的情况,除非刚好碰到一个波长的谐振非常强但是仿真时间不够。

孙博士您好!

谢谢您!
我也是发现BFAST好像很难得到transmission <1的结果。
所以我按照您的指导,还有您推荐的帖子里面的要点,用了bloch planewave然后扫描波长。
equivalent index =4;
FDTD mesh =2;
FDTD simulation wavelength 400-800 nm;
mesh wavelength fixed: 400-800 nm;
pulselength = 50;
offset = 50*2;
autoshutoff = 1e-6;
boundard condition用bloch和symmetric。

这样的话仿真的时间在可以接受的范围内。得到的结果见附图。图中红色圈出来突变点我觉得应该也是物理上有意义的结果,不是artifacts,因为这个突变点会随着入射角而变化,应该是结构对特定波长产生了谐振导致的。
您觉得这样的结果差不多正确么?