Fdtd透射、反射和总吸收的问题


#1

Abs.lsf (2.5 KB)
P_300nm.txt (14 Bytes)
Ag_300nm_800nm.txt (10.2 KB)
T.txt (70 Bytes)
R.txt (69 Bytes)
Ag_film_p0.log (2.3 KB)
Ag_film.fsp (1.2 MB)
老师你好,
我用FDTD计算一层Ag膜(厚50nm。长宽分别为200nm和200*squrt(3)),透射是在这层Ag膜下面加了监视器,反射是在Ag膜光源背后加了监视器,然后又用脚本计算了这层Ag膜的总吸收,但是,透射、反射和吸收三者加起来总是不等于1!!
帮我看看模型哪里有问题呢?感觉这么简单,一天就好了,结果已经两天了,都没有找到答案。
附件包括我模拟计算用到的所有文件了。


#2

这个比较正常,我计算一个波长的结果
R=-transmission(“monitor”);
T=transmission(“monitor_1”);
runanalysis;
aa=getresult(“Pabs_adv”,“Pabs_total”);
A=aa.Pabs_total;
?R+T+A;
绝对误差只有0.024624 ,也就是不到2.5%。

误差的主要原因至少有:
1:你用不同的方法计算反射透射和吸收(参见收敛性测试中的误差源);
2:尽管你用了5到10纳米的网格,但是整个仿真区的精度只有2,误差实际上是有传播的;
3:对于银材料,它需要更细的网格,例如0.3纳米的网格,参见这个例子
https://kb.lumerical.com/en/index.html?materials_simulations_with_silver.html

另外,我看到你通过扫描波长的方法得到宽光谱的响应,这里面是有几个问题的:
1:你需要保证网格和材料拟合不变
2:否则你实际上降低了绝大多数波长处的仿真精度,参见这个帖子


3:你用的PML不是我们正常推荐的,参见

4如果你只需要计算吸收谱,用A=1-R-T就可以了,不需要用分析组。分析组是要得到吸收的空间分布时才使用的。
R=-transmission(“monitor”);
T=transmission(“monitor_1”);
A=1-R-T;
在正入射情况下,完全没有必要扫描波长!

另外,你要得到非常准确的结果,你还需要做收敛性测试,看看结果逐步收敛在什么地方:
https://kb.lumerical.com/en/index.html?layout_analysis_test_convergence_fdtd.html